C ++ sleep()打破了程序

时间:2013-07-28 18:50:10

标签: c++ sockets connection sleep

我正在尝试通过c ++中的套接字连接到计算机。基本上这个代码应该做的是尝试连接,如果它无法连接,它应该等待3秒再试一次。

while (true) {
    if (connect(sock, (struct sockaddr *) &echoserver, sizeof(echoserver)) >= 0)
    {
        break;
    }
    cout << "Connection failed!";
    sleep(3);
}

代码在运行时会做什么,如果可以,它将连接,但如果不能,则cout永远不会被调用,sleep也永远不会被调用。当sleep不存在时,程序工作并不断尝试连接到套接字,但没有延迟,所以它无论如何都不会连接。我真的需要延迟工作。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

一旦connect失败,套接字将引用失败的连接。您不能再使用它来连接任何东西。您需要close现有套接字并分配一个新套接字。如果您在cout语句中报告了错误,那么这将更容易诊断。 (请参阅strerrorerrno的文档。)