39 lines
1.5 KiB
C#
39 lines
1.5 KiB
C#
|
using System;
|
||
|
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);
|
||
|
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();
|
||
|
}
|
||
|
}
|