gpt4 book ai didi

c - 卡在 connect()

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:12 27 4
gpt4 key购买 nike

所以,我有一个尝试连接服务器的客户端。 ip 和端口是从配置文件中检索的。如果配置文件中的某些内容不正确,我需要程序顺利失败。我使用以下代码连接到服务器

if (connect(sockfd, p->ai_addr, p->ai_addrlen) == -1)
{
perror("client: connect");
close(sockfd);
continue;
}

如果用户尝试连接到不接受连接(即不存在)的子网上的服务器,则程序将失败并显示No route to host。如果程序尝试连接到不在子网上的服务器(即配置错误),则程序会在 connect() 调用处挂起。我做错了什么?我需要它向用户提供应用程序失败的一些反馈。

最佳答案

你没有做错任何事。 TCP 是为面对网络问题时的可靠性而设计的,因此如果它没有得到对其初始连接请求的响应,它会重试几次以防请求或响应在网络中丢失。 Linux 上的默认参数导致它需要大约一分钟才能放弃。然后它将报告失败,并显示 Connection timed out 错误。

如果您想更快地检测到故障,请参阅 C: socket connection timeout

关于c - 卡在 connect(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51995372/

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