如何将客户端重新连接到服务器?

log*_*hee 6 c unix sockets network-programming

我的服务器程序(套接字流)正在运行并且它接受客户端。由于某些异常情况,服务器正在终止。另一端客户端正在等待服务器回复。如何将正在运行的客户端重新连接到新服务器?套接字中的任何功能?

alk*_*alk 9

已被connect()ed 一次的套接字不能与对 的另一个调用重用connect()

连接TCP服务器并读写部分数据的步骤如下(伪代码):

sd = socket(...) // create socket descriptor (allocate socket resource)
connect(sd, server-address, ...) // connect to server
read/write(sd, data)  // read from server 
close(sd) // close /socket descriptor (free socket resource)
Run Code Online (Sandbox Code Playgroud)

万一在connect所有客户端可以并且应该做的是之后服务器出现故障

close(sd) // close socket descriptor (free socket resource)
Run Code Online (Sandbox Code Playgroud)

然后从头开始:

sd = socket(...) // create socket descriptor (allocate socket resource)
...
Run Code Online (Sandbox Code Playgroud)

从头开始:

connect(sd, server-address, ...) // connect to server
...
Run Code Online (Sandbox Code Playgroud)

可能会导致未定义的行为,但至少会导致错误。