An open API service indexing awesome lists of open source software.

https://github.com/jchristn/simpleudp

SimpleUdp is a super simple way of building UDP clients and servers in C#.
https://github.com/jchristn/simpleudp

c-sharp csharp dotnet message nuget tcp udp udp-client udp-protocol udp-server udp-socket

Last synced: 4 months ago
JSON representation

SimpleUdp is a super simple way of building UDP clients and servers in C#.

Awesome Lists containing this project

README

        

![alt tag](https://github.com/jchristn/simpleudp/blob/master/assets/icon.ico)

# SimpleUdp

## Simple wrapper for UDP client and server in C#

[![NuGet Version](https://img.shields.io/nuget/v/SimpleUdp.svg?style=flat)](https://www.nuget.org/packages/SimpleUdp/) [![NuGet](https://img.shields.io/nuget/dt/SimpleUdp.svg)](https://www.nuget.org/packages/SimpleUdp)

SimpleUdp provides simple methods for creating your own UDP-based sockets application, enabling easy integration of sending data, receiving data, and building state machines.

## New in v2.0.x

- Retarget to .NET 8.0
- Removal of `Start`, `Stop` APIs, and, the started event
- Better multi-platform compatibility (Windows, Mac OSX, Ubuntu)

## Help or Feedback

Need help or have feedback? Please file an issue here!

## Special Thanks

Thanks to community members that have helped improve this library! @jholzer @charleypeng @seatrix

## Need TCP Instead?

I have you covered.

- WatsonTcp - easiest way to build TCP-based applications with built-in framing
- Github: https://github.com/jchristn/watsontcp
- NuGet: https://www.nuget.org/packages/WatsonTcp/
- [![NuGet Version](https://img.shields.io/nuget/v/WatsonTcp.svg?style=flat)](https://www.nuget.org/packages/WatsonTcp/)
- SimpleTcp - lightweight TCP wrapper without framing
- Github: https://github.com/jchristn/simpletcp
- NuGet: https://www.nuget.org/packages/SuperSimpleTcp/
- [![NuGet Version](https://img.shields.io/nuget/v/SuperSimpleTcp.svg?style=flat)](https://www.nuget.org/packages/SuperSimpleTcp/)
- CavemanTcp - TCP wrapper exposing controls for sending and receiving data to build state machines
- Github: https://github.com/jchristn/cavemantcp
- NuGet: https://www.nuget.org/packages/CavemanTcp/
- [![NuGet Version](https://img.shields.io/nuget/v/CavemanTcp.svg?style=flat)](https://www.nuget.org/packages/CavemanTcp/)

Don't know what to use? Just ask! File an issue, I'll be happy to help.

## Simple Example

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;

// 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));
}
```

## The Node Project

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!
```

## Version History

Please refer to CHANGELOG.md.