public void SendPacket(TClientPacket packet) { if (isConnected) { var packetBytes = PacketConverter.ToBytes(packet); socket.Send(packetBytes); } }
public void SendMulticastPacket(TServerPacket packet) { var packetBytes = PacketConverter.ToBytes(packet); var sentBytes = udpClient.Send(packetBytes, packetBytes.Length, multicastEndPoint); if (sentBytes == 0) { /* What happens then? */ } }
protected void SendPacket(TServerPacket packet, params ClientConnection[] clientConnections) { for (int i = 0; i < clientConnections.Length; i++) { var packetBytes = PacketConverter.ToBytes(packet); var sentBytes = clientConnections[i].socket.Send(packetBytes); if (sentBytes == 0) { DisconnectClient(clientConnections[i].connectionId); Console.WriteLine("Kicked client: Peer not reachable"); } } }
private void ReceiveMulticastPacketsLoop() { while (IsConnected) { var availableBytes = udpClient.Available; if (availableBytes != 0) { var senderEndPoint = new IPEndPoint(IPAddress.Any, 1); var buffer = udpClient.Receive(ref senderEndPoint); if (senderEndPoint == multicastEndPoint && OnReceiveUdpPacket != null) { OnReceiveUdpPacket(PacketConverter.ToPacket <TServerPacket>(buffer)); } } } }
private TClientPacket ReceivePacket(ClientConnection clientConnection) { var receivedBytes = clientConnection.socket.Receive(clientConnection.packetReceivingBuffer); if (receivedBytes == 0) { DisconnectClient(clientConnection.connectionId); Console.WriteLine("Kicked client: 0 bytes received"); return(default(TClientPacket)); } else { var packetBuffer = new byte[receivedBytes]; Buffer.BlockCopy(clientConnection.packetReceivingBuffer, 0, packetBuffer, 0, receivedBytes); return(PacketConverter.ToPacket <TClientPacket>(packetBuffer)); } }
private TServerPacket ReceivePacket() { lock (packetReceivingLock) { var receivedBytes = socket.Receive(packetReceivingBuffer); if (receivedBytes == 0) { Disconnect(); Console.WriteLine("Disconnected client: 0 bytes received"); return(default(TServerPacket)); } else { var packetBuffer = new byte[receivedBytes]; Buffer.BlockCopy(packetReceivingBuffer, 0, packetBuffer, 0, receivedBytes); return(PacketConverter.ToPacket <TServerPacket>(packetBuffer)); } } }