用线程池思想(但是问题好像有点不正经)写了一点代码出现了奇怪的问题,希望有经验的人可以指导一下

cc314159 2016-08-17 10:16:43
首先向进来看帖的人说声抱歉,放了张代码的照片上来,实在没办法

问题是这样子的:
这while循环里面执行了第70行的delete后
不知道为什么第60行的socket的接收就不阻塞了,一直返回-1
代码的一点解释:
代码的流程就是当第60行,检测到有客户端的数据
new一个数据处理类的对象,把当前对象的udp句柄和客户端的地址传进去(这也是数据处理对象和当前对象的唯一数据联系)
处理完数据之候就把new的对象释放掉,但是问题就出再这里如果没有delete代码是正常的,但是不知为什么调用delete释放对象以后第60行的socket接收就不会阻塞了一直,一直返回-1。而且delete调用的析构函数什么事都没做

这个难道和把当前udp的句柄传进去有关?还是我对delete函数的理解有错误?
求解答,谢谢

...全文
363 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cc314159 2016-08-23
  • 打赏
  • 举报
回复
引用 1 楼 draculamx 的回复:
1.你在START函数里面做了什么? 2.在类CDataHandler中,析构函数到底做了什么?是不是把传进去的udp句柄给释放了,或者改动了
是的,在析构函数里把套接字给关了。谢谢啊 顺便问一下如果用setsockopt设置了接收超时,要怎么样设置才能恢复到阻塞状态啊?
draculamx 2016-08-19
  • 打赏
  • 举报
回复
1.你在START函数里面做了什么? 2.在类CDataHandler中,析构函数到底做了什么?是不是把传进去的udp句柄给释放了,或者改动了

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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