vb socket通信长连接丢包问题?

lixiaolicauc 2014-10-23 10:27:47
我用vb+socket做通信转发程序,程序作为服务器端采用socket控件数组(sockServer(index))同时接受多个客户端的数据请求,处理后作为客户端发送给服务器,与服务器通信使用一个socket控件(sockClient())长连接,在控件数组的sockServer_DataArrival事件中
Private Sub sockServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
.....
scokServer(index).getdata strtemp,vbstring
doevents
.....
end sub
我现在在服务端 采用了doevents,但仍旧产生了服务端发送的数据丢失的情况.现象是可以稳定的并行一段时间,在这个时间之后就会随机地在某一个客户端上丢失数据
...全文
421 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-10-31
  • 打赏
  • 举报
回复
波特率太高了,线路不稳定?那样send应该不成功。
这个听起来不像程序问题了,只能怀疑硬件故障了。
lixiaolicauc 2014-10-31
  • 打赏
  • 举报
回复
send 是发送出去了,与DTU硬件通信的检测到串口有数据,但服务器没有接收到数据,抓包软件也找不到数据
Tiger_Zhao 2014-10-31
  • 打赏
  • 举报
回复
发送端有没有处理 send 不成功的情况?
lixiaolicauc 2014-10-31
  • 打赏
  • 举报
回复
协议就是TCP
Tiger_Zhao 2014-10-29
  • 打赏
  • 举报
回复
A)你处理数据的速度跟不上数据的接收速度,缓冲区溢出而导致丢数据。
把接收和处理程序分开,通过文件来异步传递数据。
B)同时连接的客户端数太多。
改用令牌循环,仅持有令牌的客户端才能发送数据。
Tiger_Zhao 2014-10-29
  • 打赏
  • 举报
回复
协议不是TCP是UDP?
UDP是允许丢包的。
lixiaolicauc 2014-10-29
  • 打赏
  • 举报
回复
数据量也不多,是丢包了。用不同的网络助手也会有这样丢包的现象,是否跟电脑配置有关
赵4老师 2014-10-28
  • 打赏
  • 举报
回复
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545
lixiaolicauc 2014-10-27
  • 打赏
  • 举报
回复
我也发心跳包了,是服务器端没有接收数据没有触发DataArrival事件,
lixiaolicauc 2014-10-27
  • 打赏
  • 举报
回复
我发心跳包了,连接多了就不相应DataArrival
startbin 2014-10-24
  • 打赏
  • 举报
回复
有些路由你连接后长时间没数据收发 会关闭连接的 而且这种连接关闭 双方都不会触发到 就好像拔网线一样 要避免这种情况就要有心跳包的机制 确认客户端和服务端是否有返回
lixiaolicauc 2014-10-24
  • 打赏
  • 举报
回复
自己顶一下吧
lixiaolicauc 2014-10-24
  • 打赏
  • 举报
回复
我是发三次但没有收到数据,是winsock 运行一段时间就无法触发DataArrival接收不到数据
Carlven2012 2014-10-24
  • 打赏
  • 举报
回复
我以前的思路是:将每次获得的包进行校验,不正确就发送消息叫重发,直到结束。

1,502

社区成员

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

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