关于在线程间共享套接字的问题???

sekfore 2003-05-21 08:08:27
我的程序有一个监听线程,在接收到客户连接请求以后创建一个新的线程对其进行处理。问题出现了,我的参数都成功地传送到了新的线程,但是我在新线程中对套接字进行的操作都出错,返回的是10038,就是无效套接字。我进行了多次跟踪,该套接字的句柄是成功的传到了新的线程。
就是说我用同样的句柄,在监听线程可以正常工作。但是在新线程就不行。总是套接字无效。请高手指点指点。。谢谢:)
...全文
46 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sekfore 2003-05-22
问题解决了,我的类的析构函数里要把套接字关闭。而我的那个监听线程里生成的与新客户对应的套接字是一个局部变量,在过了生存期以后要被系统销毁,这个时候析构函数发生作用,将该套接字关闭了。于是,在新的线程里面得到的套接字句柄就的确是一个无效的句柄了。。
哈哈。。。终于解决了。。。散分啦~ :)

谢谢c0der()的提示,你说到了accept函数,于是我就开始从这里出发,终于找到了问题所在。呵呵。。。谢谢你啊。。:)
回复
sekfore 2003-05-22
是这样的,我自己做了一个类把套接字进行了封装。接受请求以后就将这个套接字句柄写入一个新的对象。我曾经做过一个程序,也是用的这样的方法,但是那个程序在线程之间共享的时候并没有这个问题。
回复
c0der 2003-05-21
是这种格式吗?

socket sk = ServerSocket.Accept(...);


应该没有问题吧?
回复
发帖
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
帖子事件
创建了帖子
2003-05-21 08:08
社区公告
暂无公告