winCE系统UDP拔网线重连后收不到数据

mrsama 2018-02-28 04:57:00
服务器端用的WINCE系统,初始化SOCKET后使用线程循环recvfrom不退出

用网线直连电脑传输正常,但是在拔网线最多30秒后再插回网线,服务器地址仍然能ping通,但是无法收到任何从电脑发出的数据。

求问大佬们这究竟是什么原因,是不是WINCE系统的问题,有什么解决方法可以时恢复连接后能重新正常接收数据
...全文
697 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
draculamx 2018-03-13
  • 打赏
  • 举报
回复
还有一个问题就是,你的服务端在调用recvfrom的时候,是不是当遇到recvfrom出错的时候就关闭了套接字,这样才能解释为什么你后面再也收不到数据了。。 “是不是WINCE系统的问题”? 明确告诉你不是,我在WINCE上开发很多年了,事实证明,在我认为是WINCE系统本身有问题的前提下,最后99.99%的问题都是我自己代码的问题。。。。
draculamx 2018-03-13
  • 打赏
  • 举报
回复
服务端的socket绑定了吗? 服务器端自己检测自己,比如10秒没有收到任何数据,就退出接收线程,调用closesocket,关闭套接字,然后重新初始化,重新启动接收线程,这样应该就不会有问题了 调用closesocket很关键。。。。
赵4老师 2018-03-01
  • 打赏
  • 举报
回复
接收端连续比如60秒收不到数据,自动重启进程或使用devcon自动重启网卡驱动或自动重启系统。 百度搜“devcon”
hongss 2018-03-01
  • 打赏
  • 举报
回复
引用 4 楼 DelphiGuy 的回复:
收不到服务器发出来的数据?你用抓包工具看看它到底发出来没有,也许断网一段时间之后它就停止发送了。
  • 打赏
  • 举报
回复
收不到服务器发出来的数据?你用抓包工具看看它到底发出来没有,也许断网一段时间之后它就停止发送了。
mrsama 2018-02-28
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
使用心跳包技术验证连接的可用性 使用断开旧连接,创建新连接的办法应付断线重连 使用连接池技术控制连接数量
发送端不能更改,能动的只有接收端,有什么处理办法没
赵4老师 2018-02-28
  • 打赏
  • 举报
回复
使用心跳包技术验证连接的可用性 使用断开旧连接,创建新连接的办法应付断线重连 使用连接池技术控制连接数量

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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