C++ SOCKET在客户端不正常断开的时候如何重新监听。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ SOCKET在客户端不正常断开的时候如何重新监听。相关的知识,希望对你有一定的参考价值。
如题。谢谢了
如果用的是CS模式,一般流程如下:1,客户端非正常断开了,服务器可以得到掉线的信号。服务器的端口是正常的,这个时候,只能是客户端主动连接服务器端。
2,如果是客户端断开,或是发送数据超时了,或是得不到服务器的回应;这时可以关闭端口,重新打开,并与服务器取得联系。
3,在无线链路或是网络复杂的情况下,应在协议中加入心跳包,一方面可以达到互相校验通讯状态,一方面可以保持链接的超时掉线。 参考技术A 服务器端设置一个connect线程,每隔一定时间就去检查是否能够正常发送数据,如果不可以,自动重新连接。本回答被提问者采纳 参考技术B char MyData;
改成
char MyData[100];
然后DataPoint= &MyData;
改成DataPoint= MyData;
这样试试
c调用 socket 如果客户端连接断开,怎么判断? 还有怎么向多个 连接在一个服务器上的多个客户
c调用 socket 如果客户端连接断开,怎么判断? 还有怎么向多个 连接在一个服务器上的多个客户端发送同样的内容
参考技术A 一:如果客户端关闭连接,服务器端会收到一条连接关闭的消息,对应到你的C函数API就是,使用recv(或者read),读出的大小为0,此时就表明客户端断开连接了,如果是TCP的话,你也调用一次close(或者shutdown),这样就可以把一个TCP连接完美优雅的断开。
二:
服务器编程肯定会在accept新连接之后,保存在一个数据结构中的。发送同样的内容,只需要遍历此数据结构即可。 参考技术B
recv函数返回0。
如果是长连接,可以通过心跳包实现。
另外服务端在编写代码的时候应该把连接上的客户端的socket放到一个socket队列(用于存储在线的客户端) 每个发送一次 你就轮询一次发送一次就好了
UDP不再讨论范围内
以上是关于C++ SOCKET在客户端不正常断开的时候如何重新监听。的主要内容,如果未能解决你的问题,请参考以下文章