예제 #1
0
 public void SendPacket(TClientPacket packet)
 {
     if (isConnected)
     {
         var packetBytes = PacketConverter.ToBytes(packet);
         socket.Send(packetBytes);
     }
 }
예제 #2
0
        public void SendMulticastPacket(TServerPacket packet)
        {
            var packetBytes = PacketConverter.ToBytes(packet);
            var sentBytes   = udpClient.Send(packetBytes, packetBytes.Length, multicastEndPoint);

            if (sentBytes == 0)
            { /* What happens then? */
            }
        }
예제 #3
0
파일: Server.cs 프로젝트: NiklasVd/Biocell
        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");
                }
            }
        }
예제 #4
0
        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));
                    }
                }
            }
        }
예제 #5
0
파일: Server.cs 프로젝트: NiklasVd/Biocell
        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));
            }
        }
예제 #6
0
        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));
                }
            }
        }