C# TCP 客户端心跳检测实现示例
以下是一个使用 C# 实现的 TCP 客户端心跳检测的示例代码:
using System;
using System.Net.Sockets;
using System.Text;
using System.Threading;
class TCPClient
{
private TcpClient client;
private NetworkStream stream;
private bool isConnected;
public TCPClient()
{
client = new TcpClient();
isConnected = false;
}
public void Connect(string ipAddress, int port)
{
try
{
client.Connect(ipAddress, port);
stream = client.GetStream();
isConnected = true;
Console.WriteLine('Connected to server.');
}
catch (Exception ex)
{
Console.WriteLine('Failed to connect to server: ' + ex.Message);
}
}
public void StartHeartbeat()
{
if (!isConnected)
{
Console.WriteLine('Not connected to server.');
return;
}
try
{
byte[] heartbeatMsg = Encoding.ASCII.GetBytes('Heartbeat');
while (isConnected)
{
stream.Write(heartbeatMsg, 0, heartbeatMsg.Length);
Console.WriteLine('Sent heartbeat message to server.');
Thread.Sleep(5000); // 5秒发送一次心跳
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string response = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine('Received response from server: ' + response);
}
}
catch (Exception ex)
{
Console.WriteLine('Error occurred during heartbeat: ' + ex.Message);
}
}
public void Disconnect()
{
if (isConnected)
{
stream.Close();
client.Close();
isConnected = false;
Console.WriteLine('Disconnected from server.');
}
}
}
class Program
{
static void Main(string[] args)
{
TCPClient client = new TCPClient();
client.Connect('127.0.0.1', 8888); // 替换为实际的服务器IP地址和端口号
if (client.isConnected)
{
Thread heartbeatThread = new Thread(client.StartHeartbeat);
heartbeatThread.Start();
Console.ReadLine(); // 按Enter键停止心跳检测
client.Disconnect();
}
}
}
上述代码中,TCPClient
类封装了 TCP 客户端的连接、发送心跳消息、接收服务器响应和断开连接的操作。在 Main
方法中,首先创建一个 TCPClient
对象,并调用 Connect
方法连接到服务器。然后,创建一个新的线程,在该线程中调用 StartHeartbeat
方法发送心跳消息,并接收服务器的响应。最后,通过按 Enter 键来停止心跳检测,调用 Disconnect
方法断开与服务器的连接。
原文地址: https://cveoy.top/t/topic/blks 著作权归作者所有。请勿转载和采集!