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