1
经过两天尝试创建重新连接到服务器的客户端套接字,我想请求您的帮助。C插座重新连接
I.E.我正在启动一个服务器和一个客户端。比我杀了服务器,并希望该客户端尝试重新连接,直到我再次启动服务器。
我有一个功能socketcreate
它返回socket_fd
,我用它来第一次连接(和它的工作)。
但是,当服务器死了,我关闭之前的socket_fd
,我尝试使用reconnect
socketcreate
我得到一个错误Bad file descriptor
。
但是为什么?我已经关闭了之前的socket_fd
,我再次启动该功能以启动新的连接。
....
while(1) {
send(sock_fd, buf, strlen(buf),0);
if((numbytes = recv(sock_fd, buf, strlen(buf),0) == 0){
close(sock_fd);
sock_fd = createsocket();
}
- 是OK认识到丢失的连接(我读过,是的)。或者SIGPIPE会更好地识别send()期间丢失的连接?
- 如何重新连接while(1)?
向我们展示您的代码 – 2013-04-10 10:31:49
如果您使用的是unix套接字文件,那么在执行服务器之前删除/删除该文件(*或在将服务器*绑定之前删除),如果网络套接字那么SO_REUSEADDR – 2013-04-10 10:35:24
@GrijeshChauhan: SO_REUSEADDR'指的是重用一个地址(例如192.168.0.1:12345),而不是重复使用已经存在的'close()'ed套接字。 – alk 2013-04-10 11:26:46