首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

在子线程封锁主线程的socket出错

2012-08-13 
在子线程关闭主线程的socket出错?我在服务器的主线程里建立了socket,并与客户端通信,然后服务器创建了一个

在子线程关闭主线程的socket出错?
我在服务器的主线程里建立了socket,并与客户端通信,然后服务器创建了一个子线程,并在子线程里关闭主线程的socket,但
关闭后,服务器的主线程仍然可以与客户端通信,也就是说在子线程里关闭主线程的socket无效,
有哪位大哥知道这是什么原因吗?谢谢!

[解决办法]
用的TCP还是UDP呢?TCP的话,服务器端listen socket和实际传输数据的socket是不一个。UDP的话应该不可能发生,因为在一个非socket的fd上操作,会报错滴。
[解决办法]
tcp协议来看,如果你关闭之前发送的包,仍然能够投递到客户端那边。但是close之后就无法做到了。
你确定用的多线程模型而不是多进程吗?多线程内,关掉socket就是关掉了,多进程的话,关掉一个貌似还有另外一个,呵呵。
[解决办法]
如果你确信没有close()错socket的话,建议:
(1)检查close()的返回值是不是真的成功了。
(2)试着在close之前执行以下shutdown()函数,进行立即关闭。

热点排行