if (!OnlyOneProcess())
{
[] send = Encoding.UTF8.GetBytes("ExecuteLink=Something");
SendUDP(IPAddress.Loopback, MY_PORT, send, false);
}
public static bool SendUDP(IPAddress ip, ushort port, byte[] send, bool is_broadcast)
{
try
{
IPEndPoint groupEP = new IPEndPoint(ip, port);
UdpClient udp = new UdpClient();
udp.EnableBroadcast = is_broadcast;
udp.DontFragment = true;
udp.Send(send, send.Length, groupEP);
udp.Close();
return true;
}
catch { }
return false;
}
And capture the message in socket like that
tudp = LIB.UDPRead(IPUB.PORT, search_udp);
static void search_udp(Socket sender, EndPoint ep, byte[] data, int recv)
{
string stringData = Encoding.UTF8.GetString(data, 0, recv );
}
public static Thread UDPRead(ushort port, dOnUDPRead search)
{
Socket udp = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, port);
udp.Bind(iep);
Thread h_b = new Thread(new ParameterizedThreadStart(TUDPRead));
h_b.SetApartmentState(ApartmentState.MTA);
h_b.Name = "BROADCAST";
h_b.Priority = ThreadPriority.BelowNormal;
h_b.IsBackground = true;
h_b.Start(new object[] { udp, iep, search });
return h_b;
}
public delegate void dOnUDPRead(Socket sender, EndPoint e, byte[] data, int count);
static void TUDPRead(object o)
{
object[] ar = (object[])o;
Socket udp = (Socket)ar[0];
IPEndPoint iep = (IPEndPoint)ar[1];
dOnUDPRead ev = (dOnUDPRead)ar[2];
try
{
byte[] data = new byte[20480];
while (true)
{
EndPoint ep = (EndPoint)iep;
int recv = udp.ReceiveFrom(data, ref ep);
if (recv <= 0) continue;
ev(udp, ep, data, recv);
Thread.Sleep(1);
}
}
catch (Exception ex) { LIB.Error(ex, LIB.EError.OnlyLog); }
finally { if (udp != null) udp.Close(); }
}