c++ socket客户端重连
时间: 2023-09-04 11:06:44 浏览: 51
当socket客户端断开连接后,需要重新连接服务器。以下是一个示例代码,用于实现socket客户端重连:
```c
int sockfd;
struct sockaddr_in servaddr;
// 创建socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
// 设置服务器地址
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT);
inet_pton(AF_INET, IPADDR, &servaddr.sin_addr);
// 连接服务器
if (connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) {
printf("Error: connect failed\n");
close(sockfd);
return -1;
}
// 连接成功,开始通信
while (1) {
// ...
}
// 如果连接断开,尝试重新连接
while (1) {
printf("Info: try to reconnect...\n");
// 创建socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
// 连接服务器
if (connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == 0) {
printf("Info: reconnect success\n");
break;
}
// 连接失败,等待一段时间后重试
printf("Error: reconnect failed\n");
close(sockfd);
sleep(5);
}
```
在主循环中,当连接断开时,程序会进入重连循环,不断尝试连接服务器。当连接成功后,程序会跳出重连循环,继续进行通信。需要注意的是,在重连时需要关闭之前的socket。否则,会出现资源泄漏等问题。