线程间通信问题!

clown 2009-12-21 09:28:57
一个主线程 一个监控线程
主线程用来recv数据 监控线程监控recv的接收时间 超时就重新监听 accept()

现有个问题 我在监控线程中判断waitforsingleobject超时时 关闭发送过来的套接字 在重新监听
if (value==WAIT_TIMEOUT)
{
closesocket(conn);
conn=accept(ser,(SOCKADDR*)&clientaddr,&len);
}
主线程那边 recv后 出现10053错误

在监控线程中直接关闭主线程里的监听套接字是否可以 然后在重新监听 是不是还得发送消息什么的?
烦劳大哥们指点

...全文
130 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
尘雨 2009-12-22
  • 打赏
  • 举报
回复
是可以的,不过监听线程要做好异常处理就行了。
clown 2009-12-22
  • 打赏
  • 举报
回复
我的问题也没回答啊
在监控线程中直接关闭主线程里的监听套接字是否可以
mengde007 2009-12-21
  • 打赏
  • 举报
回复
WSAECONNABORTED
10053
Software caused connection abort.
An established connection was aborted by the software in your host computer, possibly due to a data transmission time-out or protocol error.

就算是判断超时,要正确点;这个错误原本仍然在连接状态;
MoXiaoRab 2009-12-21
  • 打赏
  • 举报
回复
自定义一个线程消息,比如WM_CLOSESOCKET,在它对应的处理函数中中关闭,然后重新监听

PostThreadMessage把WM_CLOSESOCKET发送过去,就行了

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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