tcp socket连接断开后重连失败

babachou babachou 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
下边是部分代码

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确实是重新创建的
...全文
评论 4
收藏 已收藏
分享
返回顶部
babachou
C语言 70,040 成员 243,237 内容