linux socket通信为什么只能一个客户向另一个客户发送消息,另一个客户却不能往回发送数据?

我有一个服务器,里面固定绑定了两个端口:6000和6001.要实现两个客户端通信,一个接上的端口6000,一个客户端接上端口6001,这两个客户能相互发送和接收对方发过来... 我有一个服务器,里面固定绑定了两个端口:6000和6001. 要实现两个客户端通信,一个接上的端口6000,一个客户端接上端口6001,这两个客户能相互发送和接收对方发过来的消息。
但我运行时,两个客户端能连接上来,发送消息时,谁先发送,另一个可以收到发过来的消息;但另一个客户却不能再向先发送消息的客户端发消息了。代码贴上来,希望大虾看看问题出在哪里了?
不好意思,代码帖不上来, 我只截图了。
补充一下,一个端口只能连接一个客户端,如果有新的客户端连接,就将原来连接的客户断开,只连接新连接上来的。

问题解决了,修改handle_read_write函数后

就可以正常运行了
展开
 我来答
花胶之家
2012-10-13 · TA获得超过250个赞
知道小有建树答主
回答量:215
采纳率:100%
帮助的人:61.3万
展开全部
1.建议在第二个发送信息处调试下,或者捕获异常,来获取是什么错误。
2.是不是socket定义重名,在使用中的socket是不能再次发送数据的。
3.检查是不是端口出现问题,或是重用,或是不准确。
4.检查语法的逻辑错误,比如 return 后面的语句就不执行了,是不是遗漏了
这方面。
创作者XXGDQ4kMbU
2012-10-13 · TA获得超过1281个赞
知道小有建树答主
回答量:371
采纳率:66%
帮助的人:429万
展开全部
粗略看了一遍. s1,和s2 是非阻塞socket 但是 c1和c2没有设置非阻塞属性.
建议用gdb调试看看程序卡在什么地方了.
也有可能是客户端在第一次收发后就卡死在什么地方了...
追问
修改之后,1客户端能向2发送消息,2客户端只能接收一次;2客户端能向1发消息,但1客户端接收不到了。
追答
把客户端代码也贴上来.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式