2011-05-31 96 views
0

我已经构建了一个使用“Winsock”工具的简单项目。vb6中的winsock溢出问题

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

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

“溢出”

有什么办法可以解决这个问题吗?

+0

发送或接收数据时发生溢出吗? – 2011-05-31 13:27:30

回答

0

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

maximum length for string in VB6

如果这是你的问题,通过几个字符串尝试拆分输入数据。

0

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

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

+0

其实,我正在用vb6创建一个代理服务器。所以,我正在处理网站的服务器。 – faressoft 2011-05-31 09:03:24

0

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

这是一个相当简单的解决这个问题的方法 - 更好的方法是为数据握手设计一个简单的协议,以便知道每个数据包都已收到。