连接() 在连接被拒绝时长时间挂起
connect() hang for long time upon connection refused
我有一个应该不时连接到服务器的小代理 第一阶段它打开一个socket
:
const char* hostname // e.g. "127.0.0.1"
hostaddr = inet_addr(hostname);
/* Ultra basic "connect to port 22 on localhost"
* Your code is responsible for creating the socket establishing the
* connection
*/
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_family = AF_INET;
sin.sin_port = htons(22);
sin.sin_addr.s_addr = hostaddr;
if (connect(sock, (struct sockaddr*)(&sin),
sizeof(struct sockaddr_in)) != 0) {
fprintf(stderr, "failed to connect!n");
return -1;
}
当ip-address
无效时,连接似乎挂起很长时间 失败之前
查看手册页提供了有关该主题的一些数据,但没有提供如何覆盖它
我的问题是为什么以及如何为它添加超时(或任何其他解决方案(
引自此处的答案之一
将套接字置于非阻塞模式,直到连接完成,然后在建立连接后将其重新置于阻塞模式。
相关文章:
- 使用Boost Interprocess创建托管共享内存需要很长时间
- SFML RenderWindow打开窗口需要很长时间
- Kafka C++客户端需要很长时间才能收到消息
- 给定使用 C++ 或 C,我如何测量在 linux 下进行线程切换需要多长时间?可能吗?
- asio::read() 需要很长时间,使用 asio::write 没有问题
- 将线程锁定很长时间
- 正在等待在非阻塞文件描述符上长时间运行ioctl
- 即使长时间等待,C++线程也不会加入
- 连接() 在连接被拒绝时长时间挂起
- 为什么这段代码需要这么长时间才能用 g++ 编译?
- 如何在长时间运行的方法中等待信号?
- mbed 套接字连接需要很长时间
- Lambda 捕获此函数和长时间运行的函数
- std::fstream 需要很长时间才能将大数据写入.csv文件中
- 为什么与Java和Python相比,使用Cmake运行C++程序每次都需要这么长时间?
- 需要很长时间
- 在关闭应用程序期间正确关闭线程,该线程可能会运行很长时间的循环
- 如何在长时间计算中进行C 的一次进度更新
- gai_cancel() 需要很长时间才能成功
- 长时间使用活动的MySQL连接很糟糕