RoboidControl-csharp/SiteServer.cs
2025-01-01 09:58:15 +01:00

87 lines
3.8 KiB
C#

using System.Net;
using System.Net.Sockets;
namespace Passer.Control.Core {
public class SiteServer : Participant {
public SiteServer(int port) {
this.ipAddress = "0.0.0.0";
this.port = port;
this.endPoint = new IPEndPoint(IPAddress.Parse(ipAddress), 0); // for sending, but should not be used really...
this.udpClient = new UdpClient(); // for receiving
this.udpClient.Client.Bind(new IPEndPoint(IPAddress.Any, port));
this.udpClient.BeginReceive(new AsyncCallback(result => ReceiveUDP(result)), null);
}
protected override void ProcessClient(ClientMsg msg) {
if (msg.networkId == 0) {
this.Send(new NetworkIdMsg(this.networkId));
Console.WriteLine($"############################ New Client -> {this.networkId}");
}
else
Console.WriteLine($"############################ New Client");
}
}
// public static class SiteServer {
// public static async Task ReceiveData(Stream dataStream, Participant client) {
// while (true) {
// byte packetSize = (byte)dataStream.ReadByte();
// if (packetSize != 0xFF)
// await ReceiveData(dataStream, client, packetSize);
// // else timeout
// }
// }
// public static async Task ReceiveData(Stream dataStream, Participant client, byte packetSize) {
// byte msgId = (byte)dataStream.ReadByte();
// if (msgId == 0xFF) {
// // Timeout
// return;
// }
// //UnityEngine.Debug.Log($"R {msgId} from {client.ipAddress}");
// bool result = false;
// switch (msgId) {
// case ClientMsg.Id: // 0xA0 / 160
// result = await ClientMsg.Receive(dataStream, client, packetSize);
// break;
// case NetworkIdMsg.Id: // 0xA1 / 161
// result = await NetworkIdMsg.Receive(dataStream, client, packetSize);
// break;
// case InvestigateMsg.Id: // 0x81
// result = await InvestigateMsg.Receive(dataStream, client, packetSize);
// break;
// case ThingMsg.id: // 0x80 / 128
// result = await ThingMsg.Receive(dataStream, client, packetSize);
// break;
// case NameMsg.Id: // 0x91 / 145
// result = await NameMsg.Receive(dataStream, client, packetSize);
// break;
// case ModelUrlMsg.Id: // 0x90 / 144
// result = await ModelUrlMsg.Receive(dataStream, client, packetSize);
// break;
// case PoseMsg.Id: // 0x10 / 16
// result = await PoseMsg.Receive(dataStream, client, packetSize);
// break;
// case CustomMsg.Id: // 0xB1 / 177
// result = await CustomMsg.Receive(dataStream, client, packetSize);
// break;
// case TextMsg.Id: // 0xB0 / 176
// result = await TextMsg.Receive(dataStream, client, packetSize);
// break;
// case DestroyMsg.Id: // 0x20 / 32
// result = await DestroyMsg.Receive(dataStream, client, packetSize);
// break;
// default:
// break;
// }
// if (result == false) {
// packetSize = msgId; // skip 1 byte, msgId is possibly a packet size byte
// await ReceiveData(dataStream, client, packetSize);
// }
// }
// }
}