社区
网络编程
帖子详情
在一辅助线程中,CSocket ::Accept()已经进入阻塞,现在要停止关闭这个端口,怎么做?
crazyingmouse
2003-08-30 01:31:11
在一辅助线程中,CSocket ::Accept()已经进入阻塞,现在要停止关闭这个端口,怎么做?
...全文
252
10
打赏
收藏
在一辅助线程中,CSocket ::Accept()已经进入阻塞,现在要停止关闭这个端口,怎么做?
在一辅助线程中,CSocket ::Accept()已经进入阻塞,现在要停止关闭这个端口,怎么做?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Oversense
2003-08-31
打赏
举报
回复
直接closesocket(监听的sock);
就ok
taolei
2003-08-31
打赏
举报
回复
ghz:
在其它线程中关闭这个套接字当然没问题,否则那阻塞的socket岂不是都不能正常关闭了。
wglacier
2003-08-31
打赏
举报
回复
1、smch(Ashes Of Time)说的可行,假如你的m_bStop变量为true,就建立一个套接字和自己连,就可以跳出Accept函数,然后你判断,如果m_bStop成立,就退出
CSocket sock;
...
while(sock.Accept(..))
{
if(m_bStop) break;
//接收该连接
}
2、在其它线程中关闭这个套接字应该也行,不过不知道有没有问题 closesocket(hSock);
caomuyong1
2003-08-31
打赏
举报
回复
兄弟,WSACleanup应该可以吧,
不然后Close吧
taolei
2003-08-31
打赏
举报
回复
在其他的线程中close这个socket,close后Accept自然也会退出并返回错误。
crazyingmouse
2003-08-31
打赏
举报
回复
TO smch(Ashes Of Time)
没明白你的意思,我在辅助线程中已经阻塞了,再去开一个线程自连? 然后根据全局变量判断是否再开一个Csocket? 那我程序不是一直在不听地开关端口了?
To wwwllg(wwwllg)
这个方法我试过,结果是client还是能连得上,而且没有错误信息。数据都不知道去哪里了。
to wangjidh(背土蚂蚁)
我线程已经accept阻塞了,怎么在下面跟关闭方法? 譬如我有一全局变量 m_bool,哪怕一button,我希望m_bool或者button一按下去,立刻把这个端口关闭掉。
我本来想把这个线程强制terminate掉,然后把Csocket delete掉,但发现不行,端口还是能
连得上,但数据知道传到哪里去了,可怕的是连没有错误信息了。
client 那边csocket.connect返回的是连接正常。
wangjidh
2003-08-30
打赏
举报
回复
if(!g_sListen.Accept(sConnect,saClient))
…………………………
关闭办法
g_sListen.Close();
Sleep(300); //等待线程结束
WSACleanup();
windows_editor
2003-08-30
打赏
举报
回复
gz
UDX协议
2003-08-30
打赏
举报
回复
一个不好的方法是,在外面delete掉这个csock对象。
smch
2003-08-30
打赏
举报
回复
设置一个全局变量g_bStop,在程序中再建立一个socket,自己连接自己,然后判断g_bStop决定是否退出还是接收数据啊。
网络编程
18,356
社区成员
64,217
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章