嵌入式Linux Socket错乱问题

kkt2019 2014-09-14 11:15:00
描述:
服务器是:ARM9+linux2.6.1
客户端是:Windows PC

问题:
服务器做了最多PC 1个client可以连接的限制,具体做法是看连接数,
第二个的话三次握手连接成功但立刻close第二个client.

某些未知情况下出现如下,pc 第一个socket连接上服务器后,服务器可以收该client的数据但服务器有数据却发送不了给client,阻塞住了。
此时需要靠再打开第二个client去连接服务器,服务器才能对刚才第一个socket 的client端发送数据阻塞住的数据(测试时,阻塞10s-100s都可以)

提问:
什么情况会导致这个服务器,有数据阻塞住了发不出,得靠另外一个client再去连接它了,才能恢复第一个的通信



...全文
125 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
awsqsh 2014-09-17
  • 打赏
  • 举报
回复
采用多线程,起一个线程专门发送。如果要收到数据来判断发送内容的话,就用信号量。
mhpmii 2014-09-17
  • 打赏
  • 举报
回复
如果要成你这样需求的,并不需要这么复杂,将服务器端做成非异步的,上一个连接处理不完,就不会处理下一个请求 你这个问题就跟踪一下看在哪个函数阻塞住了,再分析原因 对于发第二个能让第一个恢复,有个思路就是 “信号会打断阻塞的系统调用”,你再分析一下

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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