求救!!!winsock客户端接收数据问题

keney 2004-12-10 05:57:38
客户端是用getdata来接收string类型的数据的,当数据包小的时候就没什么问题,当数据包大小有2~3k的时候就不行了,只能接收到前面大部分,后面的就收不到了,有没有什么好的方法可以完整的接收数据?或者除了winsock之外还有没有其他类似好用的网络通讯控件??

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim StrData As String
Winsock1.GetData StrData, vbString

End Sub

...全文
171 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
freedomjim 2004-12-13
  • 打赏
  • 举报
回复
把数据包分小
一部分一部分发,这样就没有任何的问题了
zyg0 2004-12-10
  • 打赏
  • 举报
回复
那你就接受的时候做1个会话。客户端接完整了给服务器发个确认,服务器在继续发下个包,不完整从发
注意,winsock的缓存是8k多于8k要分包的
keney 2004-12-10
  • 打赏
  • 举报
回复
现在问题是接收不完整的话服务器不会把剩下的再发过来,只会继续发下一个数据包
nanshenvip 2004-12-10
  • 打赏
  • 举报
回复
其实你可以把数据接收到数组中,然后在本地处理数据,用split函数来处理该数组
happy_sea 2004-12-10
  • 打赏
  • 举报
回复
在发送方的发送事件中加入DoEvents和一定的延时:
wskSend.SendData "abc"
DoEvents
Sleep (200)
行云边 2004-12-10
  • 打赏
  • 举报
回复
数据包大的话 底层 tcp/ip软件会把数据 分小包来发送的,解决方法:

如果 是传输 text 型数据的话 可以在发送每一个数据后面加一个结束符号,譬如是换行符号 或者是 不能显示的符号 , 然后在接收段 判断 当前接收的数据有没有结束,没有则等待下次DataArrival事件。
tztz520 2004-12-10
  • 打赏
  • 举报
回复
你在发送的时候就应该控制包的大小,分次发送.
zgvslch 2004-12-10
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3515/3515059.xml?temp=.2376825

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧