在vb6中使用winsock的溢出问题

时间:2011-05-31 08:08:36

标签: vb6 winsock

我已经构建了一个使用“Winsock”工具的简单项目。

当我收到任何数据时,我把它放在变量中,因为我不能把它放在文本框中,因为 它是一个文件而不是文本。

但是,如果我发送一个大文件,它会给我一个错误。

“溢出”

有没有办法解决这个问题?

3 个答案:

答案 0 :(得分:0)

您是否在发送更多数据之前正确处理SendComplete事件?

否则,您将从WinSock控件中获得缓冲区溢出。

答案 1 :(得分:0)

  

VB可变长度字符串理论上只能是2GB大小,它的实际最大大小取决于可用的虚拟内存,整个应用程序也限制为2GB。但由于VB以unicode格式存储字符串,这意味着它只能包含1GB的文本。

maximum length for string in VB6

如果这是您的问题,请尝试按几个字符串拆分传入数据。

答案 2 :(得分:0)

您需要将数据拆分为较小的数据包(每个数据包大约2-5k)并分别发送每个数据包,然后在另一端重新构建数据包。您可以在数据末尾添加一个唯一字符,以便接收端知道已收到该传输的所有数据Chr(0)

对于这个问题,这是一个非常简化的解决方案 - 更好的方法是设计一个简单的数据握手协议,以便您知道每个数据包都已被接收。