gpt4 book ai didi

winapi - 在winsock中,我将如何阻止接受函数从另一个线程阻塞?

转载 作者:行者123 更新时间:2023-12-01 02:36:13 25 4
gpt4 key购买 nike

所以这是我的情况。我正在与 winsock 合作,学习一些有关网络和协议(protocol)开发的知识,但我陷入了僵局。我现在正在做一个在接受调用时阻塞的服务器,但在后台有另一个线程等待用户输入并处理用户输入。此用户输入用于发送、ping 和say 等命令,但现在我想要一个名为exit 的命令,它将关闭winsock,释放所有打开的连接,然后结束程序。问题是,这个接受线程仍然阻塞。

所以这里的问题。 1)无论如何在调用winsock函数时阻止它阻塞,2)在非阻塞模式下是这样的:

while(m_continue)
{
Sleep(1);
tempsock = accept(m_listenSock, NULL, NULL);
if(tempsock != INVALID_SOCKET)
{
if(WSAGetLastError() == WSAEWOULDBLOCK)
continue;
else
return 1;
}
break;
{

是多余的还是太无能而无法使用?

最佳答案

在用户命令线程中,当您处理“退出”命令时,关闭 m_listenSock socket 。阻塞accept()通话将立即退出 INVALID_SOCKET .

一定不要关闭m_listenSock处理两次。

关于winapi - 在winsock中,我将如何阻止接受函数从另一个线程阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10151624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com