tesses.broadcast/README.md

74 lines
2.8 KiB
Markdown
Raw Normal View History

2024-03-26 19:34:54 +00:00
Tesses.Broadcast
================
[![Version](https://img.shields.io/nuget/v/Tesses.Broadcast.svg)](https://nuget.org/packages/Tesses.Broadcast)
[![Downloads](https://img.shields.io/nuget/dt/Tesses.Broadcast.svg)](https://nuget.org/packages/Tesses.Broadcast)
[![Version](https://img.shields.io/nuget/v/Tesses.Broadcast.Eto.svg)](https://nuget.org/packages/Tesses.Broadcast.Eto)
[![Downloads](https://img.shields.io/nuget/dt/Tesses.Broadcast.Eto.svg)](https://nuget.org/packages/Tesses.Broadcast.Eto)
A simple udp broadcast library
Client
======
```csharp
using Tesses.Broadcast;
await foreach(var item in BroadcastClient.ScanAsync("Test",6942,default)) //replace Test with your service name, replace 6942 with desired port used by server, replace default with CancellationToken
{
Console.WriteLine($"Found device {item.DeviceName} with {item.ServiceUrl} and with ip: {item.Endpoint}");
}
```
Server
======
```csharp
using Tesses.Broadcast;
await new BroadcastServerBuilder()
.WithDeviceName("Mikes Phone") //replace with the server name (any string)
.WithService("Test","http://127.0.0.1:3254/") //127.0.0.1 will be rewriten by client
.WithService("Other Service", "http://127.0.0.1:4949/") //another service my friend
.WithPort(6942) //replace with desired port to listen on
.Build()
.ListenAsync();
```
Eto
===
Install [this nuget package.](https://nuget.org/packages/Tesses.Broadcast.Eto)
```csharp
using(var bro = new BroadcastDialog("Test",6942)) //replace Test with your service name, replace 6942 with desired port used by server
{
serviceUrl.Text=bro.ShowModal(); //will return empty string if cancelled
}
```
Protocol
========
## Request
| Type | Name | Value | Description |
| ---- | ---- | ----- | ----------- |
| char[11] | Signature | "TessesBcReq" | A signature to decern a request from a random udp packet |
| uint16be | NameLength | <The Length of Name> | The big endian 16 bit, byte length of Name |
| char[NameLength] | Name | <The Service Name> | The Service Name, Test in the example |
## Response
| Type | Name | Value | Description |
| ---- | ---- | ----- | ----------- |
| char[12] | Signature | "TessesBcResp" | A signature to decern a response from a random udp packet |
| uint16be | DeviceNameLength | <The Length of DeviceName> | The big endian 16 bit, byte length of DeviceName |
| char[DeviceNameLength] | DeviceName | <The Device Name> | The Device Name, "Mikes Phone" in this example |
| uint16be | ServiceUrlLength | <The Length of ServiceUrl> | The big endian 16 bit, byte length of ServiceUrl |
| char[ServiceUrlLength] | ServiceUrl | <The Service Url> | The Service Url, "http://127.0.0.1:3254/" in this example |
## Converting the url
If the hostname starts with "127." or equals "localhost" replace the hostname with the remote ip (server ip) (do this on the client)