private static void UDPReceiveCallback(IAsyncResult _result) { try { IPEndPoint _clientEndPoint = new IPEndPoint(IPAddress.Any, 0); byte[] _data = udpListener.EndReceive(_result, ref _clientEndPoint); udpListener.BeginReceive(UDPReceiveCallback, null); if (_data.Length < 4) { return; } using (ServerPacket _packet = new ServerPacket(_data)) { int _clientId = _packet.ReadInt(); if (_clientId == 0) { return; } if (clients[_clientId].udp.endPoint == null) { clients[_clientId].udp.Connect(_clientEndPoint); return; } if (clients[_clientId].udp.endPoint.ToString() == _clientEndPoint.ToString()) { clients[_clientId].udp.HandleData(_packet); } } } catch (Exception _ex) { Console.WriteLine($"Error receiving UDP data: {_ex}"); } }
public void SendData(ServerPacket _packet) { Server.SendUDPData(endPoint, _packet); }
private static void SendTCPData(int _toClient, ServerPacket _packet) { _packet.WriteLength(); Server.clients[_toClient].tcp.SendData(_packet); }