【发布时间】:2013-06-08 21:50:32
【问题描述】:
我对这段代码有疑问:
FD_ZERO(&cset);
FD_SET(s, &cset);
tval.tv_sec = TIMEOUT;
tval.tv_usec = 0;
n = select(FD_SETSIZE, &cset, NULL, NULL, &tval);
if (n==-1) {
printf(" select() failed \n");
exit(-1);
}
if (n>0) {
check_control = connect(s,(struct sockaddr*)
&indirizzo_remoto,sizeof(indirizzo_remoto));
if (check_control == -1) {
printf("Errore connect()\n");
}
}else{
printf("Timeout. I'll shutdown the client");
exit(-1);
}
我想为连接插入超时,但它不起作用:
我使用了正确的服务器 IP 地址和端口号,但连接超时。
非常感谢您的帮助。
【问题讨论】:
-
是的,使用 telnet 就可以了!
-
这是错的吗?因为我想要的是当客户端尝试与它连接时服务器已关闭,如果客户端停止并关闭套接字需要 30 秒
-
(对不起英文)......:如果服务器/客户端尝试连接到它,我想要那个
-
select() 不会为您连接()套接字。如果您想使用超时进行连接(),您需要 1. 将套接字设置为非阻塞模式。 2. 调用 connect() 3. 调用 select()。您是否完成了第 1 步和第 2 步?我们只看到第 3 步的代码。
-
我以为只有这一段代码实现了想要的结果。如何完成第 1 步和第 2 步?
标签: sockets select timeout connect