SimpleUdp provides simple methods for creating your own UDP-based sockets application, enabling easy integration of sending data, receiving data, and building state machines.
IDisposable
, thank you @jholzer
Need help or have feedback? Please file an issue here!
Thanks to community members that have helped improve this library! @jholzer
I have you covered.
- WatsonTcp - easiest way to build TCP-based applications with built-in framing
- SimpleTcp - lightweight TCP wrapper without framing
- CavemanTcp - TCP wrapper exposing controls for sending and receiving data to build state machines
Don't know what to use? Just ask! File an issue, I'll be happy to help.
Start a node.
using SimpleUdp;
UdpEndpoint udp = new UdpEndpoint("127.0.0.1", 8000);
udp.EndpointDetected += EndpointDetected;
// only if you want to receive messages...
udp.DatagramReceived += DatagramReceived;
udp.Start();
// send a message...
udp.Send("127.0.0.1", 8001, "Hello to my friend listening on port 8001!");
static void EndpointDetected(object sender, EndpointMetadata md)
{
Console.WriteLine("Endpoint detected: " + md.Ip + ":" + md.Port);
}
static void DatagramReceived(object sender, Datagram dg)
{
Console.WriteLine("[" + dg.Ip + ":" + dg.Port + "]: " + Encoding.UTF8.GetString(dg.Data));
}
Stop a node.
udp.Stop();
Start node 1.
Node\bin\Debug\netcoreapp3.1> node 127.0.0.1 8000
Start node 2.
Node\bin\Debug\netcoreapp3.1> node 127.0.0.1 8001
Send message from node 1 to node 2. To do this, enter a command as follows:
[ip:port] [msg]
i.e.
127.0.0.1:8001 hello to my friend running on port 8001!
[127.0.0.1:8000 Command/? for help]: 127.0.0.1:8001 hello to my friend on port 8001!
Send message from node 2 to node 1.
[127.0.0.1:8001 Command/? for help]: Endpoint detected: 127.0.0.1:8000
[127.0.0.1:8000]: hello to my friend on port 8001!
127.0.0.1:8000 hello back to you my friend!
.NET Core is the preferred environment for cross-platform deployment on Windows, Linux, and Mac. For those that use Mono, SimpleUdp should work well in Mono environments. It is recommended that you execute the containing EXE using --server and after using the Mono Ahead-of-Time Compiler (AOT).
mono --aot=nrgctx-trampolines=8096,nimt-trampolines=8096,ntrampolines=4048 --server myapp.exe
mono --server myapp.exe
Please refer to CHANGELOG.md.