C#开发语言的 服务端心跳包实例代码
时间: 2024-10-13 17:12:42 浏览: 55
在C#中,服务端心跳包的实现通常涉及到定时发送和接收心跳包的过程。这里是一个简单的示例,展示了如何创建一个基本的服务端监听心跳包的工作流程:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
public class HeartbeatServer
{
private TcpListener _listener;
private Timer _heartbeatTimer;
public void Start(int port)
{
// 创建TCP监听器
_listener = new TcpListener(IPAddress.Any, port);
_listener.Start();
// 设置心跳包定时任务
_heartbeatTimer = new Timer(HeartbeatInterval);
_heartbeatTimer.Elapsed += OnHeartbeatElapsed;
Console.WriteLine("Heartbeat server started on port {0}", port);
}
private int HeartbeatInterval => TimeSpan.FromSeconds(10).Milliseconds; // 每隔10秒发送一次心跳
private void OnHeartbeatElapsed(object sender, ElapsedEventArgs e)
{
try
{
// 创建一个新Socket来发送心跳
using (var client = _listener.AcceptTcpClient())
{
var heartbeatData = "Heartbeat"; // 示例数据
var stream = client.GetStream();
byte[] data = Encoding.ASCII.GetBytes(heartbeatData);
// 发送心跳数据
stream.Write(data, 0, data.Length);
Console.WriteLine($"Sent heartbeat to connected client at {DateTime.Now}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error sending heartbeat: {ex.Message}");
}
}
public void Stop()
{
_listener.Stop();
_heartbeatTimer.Dispose();
Console.WriteLine("Heartbeat server stopped.");
}
}
```
这个示例中,服务端每隔10秒会向新连接的客户端发送一个"心跳"字符串,表示它还在线。注意实际应用中可能需要处理更多的细节,例如错误处理、序列化/反序列化数据以及心跳包的确认机制。
阅读全文