c调用 socket 如果客户端连接断开,怎么判断? 还有怎么向多个 连接在一个服务器上的多个客户

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c调用 socket 如果客户端连接断开,怎么判断? 还有怎么向多个 连接在一个服务器上的多个客户相关的知识,希望对你有一定的参考价值。

c调用 socket 如果客户端连接断开,怎么判断? 还有怎么向多个 连接在一个服务器上的多个客户端发送同样的内容

参考技术A 一:
如果客户端关闭连接,服务器端会收到一条连接关闭的消息,对应到你的C函数API就是,使用recv(或者read),读出的大小为0,此时就表明客户端断开连接了,如果是TCP的话,你也调用一次close(或者shutdown),这样就可以把一个TCP连接完美优雅的断开。
二:
服务器编程肯定会在accept新连接之后,保存在一个数据结构中的。发送同样的内容,只需要遍历此数据结构即可。
参考技术B

    recv函数返回0。

    如果是长连接,可以通过心跳包实现。

参考技术C 长连接需要用心跳包来保持连接 如果超过N个心跳包没有了说明客户端掉线了 默认情况下TCP连接有一个默认超时时间(即N秒没有通讯就自动转time_wait)
另外服务端在编写代码的时候应该把连接上的客户端的socket放到一个socket队列(用于存储在线的客户端) 每个发送一次 你就轮询一次发送一次就好了

UDP不再讨论范围内

以上是关于c调用 socket 如果客户端连接断开,怎么判断? 还有怎么向多个 连接在一个服务器上的多个客户的主要内容,如果未能解决你的问题,请参考以下文章

如何判断socket客户端连接断开

C#socket通信时,怎样判断socket双方是不是断开连接

怎样判定socket连接已经关闭

C语言关于socket中如何判断客户端是不是与服务器保持连接

判断socket断开连接的方法

C# TcpListener如何知道客户端已经断开连接