我正在尝试通过c ++中的套接字连接到计算机。基本上这个代码应该做的是尝试连接,如果它无法连接,它应该等待3秒再试一次。
while (true) {
if (connect(sock, (struct sockaddr *) &echoserver, sizeof(echoserver)) >= 0)
{
break;
}
cout << "Connection failed!";
sleep(3);
}
代码在运行时会做什么,如果可以,它将连接,但如果不能,则cout
永远不会被调用,sleep
也永远不会被调用。当sleep
不存在时,程序工作并不断尝试连接到套接字,但没有延迟,所以它无论如何都不会连接。我真的需要延迟工作。
有人可以帮忙吗?
答案 0 :(得分:4)
一旦connect
失败,套接字将引用失败的连接。您不能再使用它来连接任何东西。您需要close
现有套接字并分配一个新套接字。如果您在cout
语句中报告了错误,那么这将更容易诊断。 (请参阅strerror
和errno
的文档。)