开发者社区> 问答> 正文

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

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

一个dispatcher,多个client,dispatcher向client分发任务,client完成后,将结果返回给dispatcher,dispatcher与client通过tcp连接
问题是 当其中一个client异常退出后,会导致dispathcer也退出。如何能够在某个client异常退出后,dispatcher打印出相关信息,同时能够继续运行下去?

展开
收起
a123456678 2016-06-16 14:38:10 2289 0
1 条回答
写回答
取消 提交回答
  • 建议把server从client收数据的那几句贴出来。

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

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

    2019-07-17 19:40:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
TCP Cluster for mqtt技术实施方案 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载