tcp socket连接断开后重连失败
下边是部分代码
server端:
iListenSocketFd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(iListenSocketFd == -1) {
bsd_syslog_err("Error : Init tcp server socket failed.\n");
} else {
tcpServerAddr.sin_family = AF_INET;
tcpServerAddr.sin_port = htons(44444);
tcpServerAddr.sin_addr.s_addr = 0;
setsockopt(iListenSocketFd, SOL_SOCKET, SO_REUSEADDR, &iReuseAddrFlag, sizeof(int));
if ((bind(iListenSocketFd, (struct sockaddr *)&tcpServerAddr, sizeof(struct sockaddr))) < 0) {
bsd_syslog_err("Error : Bind tcp server socket failed.\n");
} else {
if((listen(iListenSocketFd, 5)) < 0) {
bsd_syslog_err("Error : Listen tcp server socket failed.\n");
}
}
}
client端:
iClientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(iClientSocket == -1) {
bsd_syslog_err("Error : Init tcp client socket failed.\n");
} else {
setsockopt(iClientSocket, SOL_SOCKET, SO_REUSEADDR, &iReuseAddrFlag, sizeof(int));
if(connect(iClientSocket, (struct sockaddr *)&serverAddr, iAddrLen) < 0) {
bsd_syslog_err("Error : connect to peer failed.\n");
} else {
iReturnValue = bsdTcpCheckFunc(iClientSocket, pDesPath, BSD_FILE_MEMERY_CHECK, &tcpSendFileInfo);
}
}
if(iClientSocket != -1) {
close(iClientSocket);
}
第一次客户端建立连接,发消息,收消息,都没有问题,但是断开以后,第二次再调用客户端这边,创建的socketid和上次一样的,但是connect就返回失败了,请教大家是什么原因,是close后有什么超时机制吗,但是第二次虽然ID一样,socket确实是重新创建的