请教一个与服务器通信时数据收取一段时间后死掉的问题

donglq 2009-05-12 04:16:32
我做一个与服务器通信的程序,目前可以正常的收取数据,但是在接受视频数据时到大概2分钟的时候会死掉,请各位指教,我会一直关注的,要相关代码的请讲
...全文
266 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
donglq 2009-05-13
  • 打赏
  • 举报
回复
非常感谢各位 问题解决了 谢谢各位提供的建议 小弟刚出校园大门 经验不足 若有问得肤浅之处还望见谅
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 donglq 的回复:]
104 无法在中断时请求独占的信号灯
这个error我还不知道linux里面有没有对应的函数捕捉
我捕捉错误的函数是这样的 总觉得很别扭

int errno;
int geterror(){return errno;}
[/Quote]

看下服务器那边是不是重连接了?
morris88 2009-05-12
  • 打赏
  • 举报
回复
为什么104,那就需要抓包看看了...
donglq 2009-05-12
  • 打赏
  • 举报
回复
问题是我觉得TCP不需要加心跳啊 我现在觉得加了心跳也没用 不过我先试试
threeleafzerg007 2009-05-12
  • 打赏
  • 举报
回复
。。。昏,绕老半天,那么多高手帮你诊断,就这点原因。。。

只能怪你症状描述的不清楚。。。。

donglq 2009-05-12
  • 打赏
  • 举报
回复
恩 我MS知道点原因了 是不是服务器主动断开我的连接了 那是为什么啊 加心跳机制可以解决此问题么
快乐田伯光 2009-05-12
  • 打赏
  • 举报
回复
104就是连接已经复位了,也就是这个连接已经由另一端断开了。
donglq 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 guosha 的回复:]
程序死掉了,去抓包干什么? 抓到包又能干什么呢?
程序死掉一般都是内存非法操作,所以-g参数重新编译你的程序,然后修改linux环境,让程序死掉的时候自动生成core文件,最后用gdb分析core文件。看到低是执行到哪一条语句出错了。
怎么修改linux环境生成core文件,自已去google一下。
[/Quote]
现在的问题不是程序死掉,是recv()在运行2分钟之后返回-1 error 104
快乐田伯光 2009-05-12
  • 打赏
  • 举报
回复
程序死掉了,去抓包干什么? 抓到包又能干什么呢?
程序死掉一般都是内存非法操作,所以-g参数重新编译你的程序,然后修改linux环境,让程序死掉的时候自动生成core文件,最后用gdb分析core文件。看到低是执行到哪一条语句出错了。
怎么修改linux环境生成core文件,自已去google一下。
donglq 2009-05-12
  • 打赏
  • 举报
回复
这个我也不是很清楚 我的错误捕捉函数没问题么 最关键是要解决了这个问题 小弟经验不足啊 谢谢多多指点
morris88 2009-05-12
  • 打赏
  • 举报
回复
貌似 104 是这个吧:
#define ECONNRESET      104     /* Connection reset by peer */
donglq 2009-05-12
  • 打赏
  • 举报
回复
先谢谢你们了 我明天要回学校 希望今晚可以解决了 麻烦楼上两位大哥了
donglq 2009-05-12
  • 打赏
  • 举报
回复
104 无法在中断时请求独占的信号灯
这个error我还不知道linux里面有没有对应的函数捕捉
我捕捉错误的函数是这样的 总觉得很别扭

int errno;
int geterror(){return errno;}
morris88 2009-05-12
  • 打赏
  • 举报
回复
那返回 -1 后,errno 是什么...
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 donglq 的回复:]
我知道问题出在什么地方了 recv()在2分钟之后返回值为-1,为什么会在2分钟之后才返回-1啊
[/Quote]

看下errono是什么?
donglq 2009-05-12
  • 打赏
  • 举报
回复
我知道问题出在什么地方了 recv()在2分钟之后返回值为-1,为什么会在2分钟之后才返回-1啊
morris88 2009-05-12
  • 打赏
  • 举报
回复
注意一下你的多线程或多进程处理,是否有互斥同步的不够的地方...
你可以先测试一下单一进程或单一线程的方式,
也测试一下只接收一个服务器源数据的方式...
donglq 2009-05-12
  • 打赏
  • 举报
回复
我已经排除了缓冲区越界的问题,现在我定位到rec(),2分钟左右程序好像在这里死掉了,为什么是2分钟左右死掉,前面可以正常接收数据
donglq 2009-05-12
  • 打赏
  • 举报
回复
各位 我发现了一个问题 2分钟后我的程序就收不到数据了 这是为什么
donglq 2009-05-12
  • 打赏
  • 举报
回复
楼上 你说的这些我都设置过 这是否可以排除缓冲区越界的问题
加载更多回复(13)

23,120

社区成员

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

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