关闭(fd)未生效

时间:2011-01-19 12:50:56

标签: c

我的要求是连接服务器,如果它已启动,客户端将继续尝试连接服务器,直到连接成功。所以我使用套接字创建了套接字fd(并尝试使用connect()连接。如果连接失败,我使用close()关闭fd。

预期的行为是,当下一次尝试时,需要通过socket()生成相同的文件描述符。但是对于每次尝试,只创建新的描述符,因为我在关闭文件描述符时失败。可能是问题。任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

如果要在建立连接之前反复尝试连接服务器,只需使用呼叫循环进行连接即可。 socket仅将端点和文件描述符绑定在一起。

while (1) {
    state = connect(fd, &sa, sizeof sa);
    if (state == 0) {
        break
    } else {
        /* Is the server available yet? */
        if (errno == ECONNREFUSED) {
            /* No, continue trying to connect. */
            continue;
        } else {
             /* Deal with other errors. */
        }
    }
}