コード例 #1
0
        private void ProcessPackets()
        {
            foreach (DreamConnection dreamConnection in DreamConnections)
            {
                byte[] packetData;

                try {
                    while ((packetData = dreamConnection.ReadPacketData()) != null)
                    {
                        IPacket packet = IPacket.CreatePacketFromData(packetData);

                        try {
                            _packetIDToCallback[packet.PacketID]?.Invoke(dreamConnection, packet);
                        } catch (Exception e) {
                            Console.Error.WriteLine("Error while handling received packet (" + packet.PacketID.ToString() + "): " + e.Message);
                        }
                    }
                } catch (Exception e) {
                    Console.Error.WriteLine("Error while processing recieved packet from user '" + dreamConnection.CKey + "': " + e.Message);
                }
            }
        }
コード例 #2
0
ファイル: ClientConnection.cs プロジェクト: ike709/OpenDream
        public void ProcessPackets()
        {
            while (this.Connected && _tcpStream.DataAvailable) {
                try {
                    UInt32 packetLength = _tcpStreamBinaryReader.ReadUInt32();
                    byte[] packetBuffer = new byte[packetLength];

                    int bytesRead = _tcpStream.Read(packetBuffer, 0, (int)packetLength);
                    while (bytesRead < packetLength) {
                        bytesRead += _tcpStream.Read(packetBuffer, bytesRead, (int)packetLength - bytesRead);
                    }

                    IPacket packet = IPacket.CreatePacketFromData(packetBuffer);
                    try {
                        _packetIDToCallback[packet.PacketID]?.Invoke(packet);
                    } catch (Exception e) {
                        Console.Error.WriteLine("Error while handling received packet (" + packet.PacketID.ToString() + "): " + e.Message);
                    }
                } catch (Exception e) {
                    Console.WriteLine("Error while processing packets: " + e.Message);
                }
            }
        }