gpt4 book ai didi

c++ - Winsock c++,程序在连接到离线服务器时卡住

转载 作者:行者123 更新时间:2023-11-28 00:26:18 29 4
gpt4 key购买 nike

我的程序在尝试连接到离线服务器时卡住,如果它在线则不会这样做,我知道它正在尝试连接多次。

有没有办法在不阻塞主代码的情况下做到这一点?

我的连接函数

bool WSockClient::ConnectServer(int PortNumber, char *IP)
{
SetClientSockAddr(&sockAddr, PortNumber, IP); // Settings

if((hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
return false;


if(connect(hSocket, (sockaddr*)(&sockAddr), sizeof(sockAddr)) != 0) // Connect to the server
return false;

//cout << "Attempting to connect to " << inet_ntoa(sockAddr.sin_addr) << endl;

return true;
}

最佳答案

默认情况下,套接字是“阻塞的”,这意味着某些调用(如 connect)将阻塞程序的执行,直到操作完成。在 MS-Windows 上,您可以通过调用 ioctlsocket 将套接字更改为“非阻塞” .

对于非阻塞套接字,connect 调用将立即返回,您必须使用select 来确定连接是否成功。您可以找到一些附加信息 here

关于c++ - Winsock c++,程序在连接到离线服务器时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24849735/

29 4 0
文章推荐: html - Apple Store 的输入框如何防止用户点击被视为点击提示短语的搜索框?
文章推荐: javascript - 使用 Angular 读取 JSON
文章推荐: html -
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com