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 著作权归作者所有。请勿转载和采集!