您好,匿名用户
随意问技术百科期待您的加入

Socket TCP连接 一端异常退出导致另一端退出

0 投票

linux环境下用C写了一个程序socket程序,实现功能如下:

一个dispatcher,多个client,dispatcher向client分发任务,client完成后,将结果返回给dispatcher,dispatcher与client通过tcp连接

问题是 当其中一个client异常退出后,会导致dispathcer也退出。如何能够在某个client异常退出后,dispatcher打印出相关信息,同时能够继续运行下去?

用户头像 提问 2013年 9月18日 @ Viktor 上等兵 (290 威望)
分享到:

1个回答

+1 投票
 
最佳答案

建议把server从client收数据的那几句贴出来。

多打一些log,确认下到底是哪一步错了。client挂掉不太可能会导致server也挂掉,我觉得应该是你的实现逻辑有错,比如说recv返回了-1(所以要打log),然后你没有做好判断,直接 buf[ret] = '\0' 写了错误的内存导致崩溃。

另外,开启coredump可以帮助你调试。例如执行ulimit -c 1024,然后用gcc/g++加上-g编译,再用gdb载入server崩溃产生的core文件,执行bt命令看看是哪一句出错了。

用户头像 回复 2013年 9月18日 @ Zyra 上等兵 (289 威望)
选中 2013年 9月7日 @Viktor
提一个问题:

相关问题

+3 投票
1 回复 63 阅读
0 投票
1 回复 38 阅读
用户头像 提问 2012年 12月1日 @ Athena 上等兵 (346 威望)
0 投票
1 回复 28 阅读
用户头像 提问 2014年 1月29日 @ Vi 上等兵 (121 威望)
0 投票
0 回复 145 阅读
0 投票
1 回复 43 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...