socket疑虑,微软的BUG?

SoulRed 2017-08-29 04:15:35
用task创建10个socket客户端。连接一个服务器
如果是连接后立即发送数据到服务器,则服务器可能收不到发送的包(需要创建客户端后等待一会,这个可以理解)
可以正常收发的客户端数量每次都不一样,有时候是2个有时候是7个
这时候你即使等待几秒或者几十秒,再重新发送数据到服务器,那些之前无法收到数据的socket客户端连接,此时仍然无法收到数据,但是你检测socket连接,显示正常,命令行 netstat -an 也全部显示正常,也可以发送数据,但就是收不到。

这些只能发送,不能收到数据包,但显示正常的连接是什么情况,
小弟才疏学浅,这样的问题真心没碰到过。
这样的连接除了断开重连外,还有其他办法处理吗?



注:10个客户端创建后,thread.sleep一会即可全部正常收发。
...全文
242 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SoulRed 2018-02-21
  • 打赏
  • 举报
回复
虽然未经测试,但我感觉还是个时间的问题,创建socket对象后最好等几秒(时间根据机器性能自行调整) 即可全部正常发送(并行或者多线程均正常) 创建后不要立即发送数据,不然会一直阻塞,估计还是微软socket不完善(没有异常超时检测,无限等待)
大鱼> 2017-08-30
  • 打赏
  • 举报
回复
曾一度怀疑过微软BUG的存在,后来发现还是自己经验缺乏
xian_wwq 2017-08-30
  • 打赏
  • 举报
回复
在怀疑微软之前,建议还是先怀疑下自己的代码 具体问题最好上代码
SoulRed 2017-08-30
  • 打赏
  • 举报
回复
我电脑4核心, 创建1个服务端和1000个客户端,用task对每个客户端创建单独线程,1000个服务端同时发送100个数据包给服务端,只要在发送后等待一定的时间,大约几秒,即可全部正常。 但是我开篇提到的那个问题,仍然未解决。。。可能是因为创建了之后立即发送数据导致某些被阻塞了? 10个中有几个是正常的,但其他几个就无法正常收到。。。。
das白 2017-08-29
  • 打赏
  • 举报
回复
从来没有遇到过....
  • 打赏
  • 举报
回复
你自己程序的问题。
qq_18817603 2017-08-29
  • 打赏
  • 举报
回复
我感觉SOCKET中一个监听一个异步回调,两个设置就能解决问题
homesos 2017-08-29
  • 打赏
  • 举报
回复
是代码写的有问题,程序BUG吧?
xdashewan 2017-08-29
  • 打赏
  • 举报
回复
wireshark抓包看过程
dy00544 2017-08-29
  • 打赏
  • 举报
回复
引用 楼主 DOwnstairs 的回复:
用task创建10个socket客户端。连接一个服务器 如果是连接后立即发送数据到服务器,则服务器可能收不到发送的包(需要创建客户端后等待一会,这个可以理解) 可以正常收发的客户端数量每次都不一样,有时候是2个有时候是7个 这时候你即使等待几秒或者几十秒,再重新发送数据到服务器,那些之前无法收到数据的socket客户端连接,此时仍然无法收到数据,但是你检测socket连接,显示正常,命令行 netstat -an 也全部显示正常,也可以发送数据,但就是收不到。 这些只能发送,不能收到数据包,但显示正常的连接是什么情况, 小弟才疏学浅,这样的问题真心没碰到过。 这样的连接除了断开重连外,还有其他办法处理吗? 注:10个客户端创建后,thread.sleep一会即可全部正常收发。
我不觉得微软会有这种非常容易发现的bug。 你确定你的服务端没问题?
易2017 2017-08-29
  • 打赏
  • 举报
回复
楼主的问题太高端,我回答不出来,坐等学习

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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