如何避免SOCKET_ERROR?

JoeRen 2003-09-12 04:34:43
我有两个线程和两个已连接的Socket。每个线程的主要工作都是不停地从一个Socket读取然后写入另一个Socket,但是方向相反。
这样,所有线程均阻塞于recv调用。我不讨论出错的情形,因为我从不主动断开连接,正常情况下,应当是对方断开连接,然后recv以0返回。
问题就来了:当一个连接断开时,程序的正确行为应当是将另一个连接也关闭。但我只有一个线程的recv能返回,此时我当然可以正确地关闭掉相应的Socket,这样另一个线程正在等待的recv socket该怎么办呢?
目前我是强行把它关闭掉了。这样另一个线程的recv马上退出,并返回SOCKET_ERROR,GetLastError将返回10038。然后,另一个线程盲目地将两个Socket再关闭一次。
显然这样做不太好。有更好的方法吗?有什么方法可以避免recv返回SOCKET_ERROR呢?
...全文
171 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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