欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > C#心跳机制的服务器(完整)

C#心跳机制的服务器(完整)

2025/11/10 14:19:22 来源:https://blog.csdn.net/weixin_73535261/article/details/139783239  浏览:    关键词:C#心跳机制的服务器(完整)

控制台应用项目

心跳机制:心跳机制出现在tcp长连接中,客户端和服务器之间定时发送一种特殊的数据包,通知对方还在线,以确保tcp连接的可靠性。有可能tcp连接由于某些原因(例如网线被拔了,突然断电)导致客户端断了,但是服务器不知道客户端断了,服务器还保持与客户端连接的状态,所以不浪费资源,需要知道客户端非正常中断,服务器把断开客户端断开连接。需要加入心跳包机制

tcp心跳:需要心跳机制,tcp本身内置了keepalive心跳机制,但是这种内置心跳机制不足以满足所有网络的情况,所以有必要自己写心跳机制

网络情况满足keepalive心跳机制:1.tcp属于keepalive心跳机制 有些设备不会处理keepalive心跳包2.keepalive心跳机制只能说明连接是活的,应用实现心跳机制,可以保证连接是活的并且应用正常工作

心跳检测步骤:1.客户端每隔一个时间间隔发生一个探测包给服务器2.客户端发包时启动一个超时定时器3.服务器端接收到检测包,应该回应一个包4.如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器5.如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了

心跳机制服务器

Program类:

namespace _01_心跳机制服务器
{internal class Program{static Server server;static void Main(string[] args){server = new Server(IPAddress.Any,3333);server.Start();server.有客户端连入的事件 += 有客户端连入服务器方法;// 绑定事件server.客户端断开事件 += f2;server.接受到消息的事件 += f3;Console.ReadKey();}public static void 有客户端连入服务器方法(object obj){TcpClient t1 = obj as TcpClient;Console.WriteLine(t1.Client.RemoteEndPoint+"连接到服务器");}public static void f2(object obj){Console.WriteLine(obj.ToString()+"断开连接");}public static void f3(TcpClient t1, byte[] b1){string content = Encoding.UTF8.GetString(b1);server.Send(content);}}
}

创建Server类:

namespace _01_心跳机制服务器
{internal class Program{static Server server;static void Main(string[] args){server = new Server(IPAddress.Any,3333);server.Start();server.有客户端连入的事件 += 有客户端连入服务器方法;server.客户端断开事件 += f2;server.接受到消息的事件 += f3;Console.ReadKey();}public static void 有客户端连入服务器方法(object obj){TcpClient t1 = obj as TcpClient;Console.WriteLine(t1.Client.RemoteEndPoint+"连接到服务器");}public static void f2(object obj){Console.WriteLine(obj.ToString()+"断开连接");}public static void f3(TcpClient t1, byte[] b1){string content = Encoding.UTF8.GetString(b1);server.Send(content);}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词