我的要求是连接服务器,如果它已启动,客户端将继续尝试连接服务器,直到连接成功。所以我使用套接字创建了套接字fd(并尝试使用connect()连接。如果连接失败,我使用close()关闭fd。
预期的行为是,当下一次尝试时,需要通过socket()生成相同的文件描述符。但是对于每次尝试,只创建新的描述符,因为我在关闭文件描述符时失败。可能是问题。任何人都可以帮助我。
答案 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. */
}
}
}