superstar_v2/HeartbeatSender.cs

39 lines
1.5 KiB
C#
Raw Normal View History

2025-05-14 16:25:24 +08:00
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Timers;
namespace HeartbeatSender{
public class heartbeatSender
{
private readonly UdpClient udpClient;
private readonly IPEndPoint remoteEndPoint;
private readonly System.Timers.Timer heartbeatTimer;
public IPEndPoint RemoteEndPoint => remoteEndPoint;
public heartbeatSender(string targetIp, int targetPort, int intervalMilliseconds = 3000)
{
udpClient = new UdpClient();
// 設置 IP 和 PORT
remoteEndPoint = new IPEndPoint(IPAddress.Parse(targetIp), targetPort);
2025-05-14 17:15:38 +08:00
// 每3秒發送一次
2025-05-14 16:25:24 +08:00
heartbeatTimer = new System.Timers.Timer(intervalMilliseconds);
heartbeatTimer.Elapsed += SendHeartbeat;
heartbeatTimer.AutoReset = true;
}
private void SendHeartbeat(object sender, ElapsedEventArgs e)
{
try
{
string heartbeatMessage = "HEARTBEAT";
byte[] data = Encoding.UTF8.GetBytes(heartbeatMessage);
udpClient.Send(data, data.Length, remoteEndPoint);
Console.WriteLine($"Heartbeat sent to {remoteEndPoint.Address}:{remoteEndPoint.Port}");
}
catch (Exception ex)
{
Console.WriteLine($"Error sending heartbeat: {ex.Message}");
}
}
public void Start() => heartbeatTimer.Start();
public void Stop() => heartbeatTimer.Stop();
}
}