请问用C语言 socket编程,如何使TCP客户端实现网络恢复后自动重连的功能?

请问用C语言 socket编程,如何使TCP客户端实现网络恢复后自动重连的功能?
int re = send(sockClient,(char *)P,n,0);
if(re==-1)
{
//AfxMessageBox("连接断开");
do
{
Sleep(1000); } while (0!=connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)));
//AfxMessageBox("重连成功");
}
我的代码是这样写的,但是关闭服务端再打开服务端,却无法再次连接。试过先closesocket(sockClient);
WSACleanup();
再重新连接,也还是不行。请问这是什么原因呢?
呵呵,想了想 大概是这样几种可能,你可以尝试一下。

1。重新连接的过程要重新创建sockclient 也就是重新调用函数创建。

2。服务器关闭后再开启,绑定的是同一个接口。当关闭后再开启的时间较短时
端口可能处于斗中忙状态,倒空宽山置再开启绑定到该端口失败,也就是服务器端启巧碧动失败。 处理办法:你可以利用setsockopt函数,将端口设置为可重用状态,我忘记那个宏是什么了 你可以上网去查查setsockopt的用法。

希望对你有用

best wishes
建议你去我的空间博客中看一下关于socket连接过程,你会明白为什么连接不了,因为accept后返回的socket是系统随孙槐机分配的。TCP指的点对点,其实就是socket对socket。尺凯猜陵型
← 上一篇: 下一篇: →