コード例 #1
0
        internal void Runner()
        {
            peer.AddDeveIncomingMessage(new DeveIncomingMessageStreamSocket(this, new byte[2] { (byte)DeveMessageTypeStreamSocket.StatusChanged, (byte)NetworkStatusStreamSocket.Connected }));

            Thread tr = new Thread(Sender);
            tr.Start();

            while (!shouldShutdown && tcpClient.Connected)
            {
                try
                {
                    byte[] firstLengthIntByteArray = ReadThisAmmountOfBytes(4);
                    int bytesToRead = BitConverter.ToInt32(firstLengthIntByteArray, 0);

                    if (bytesToRead > peer.MaxMessageSize)
                    {
                        Console.WriteLine("Warning: I'm gonna receive a big message of the size: " + bytesToRead);
                        //throw new InvalidDataException("This message is probably a bit big :), the size is: " + bytesToRead + " max message size is: " + this.maxMessageSize);
                    }

                    byte[] data = ReadThisAmmountOfBytes(bytesToRead);
                    DeveIncomingMessageStreamSocket devIn = new DeveIncomingMessageStreamSocket(this, data);
                    peer.AddDeveIncomingMessage(devIn);

                }
                catch (SocketException e)
                {
                    Console.WriteLine("Socket exception: " + e.ToString());
                    break;
                }
                catch (EndOfStreamException e)
                {
                    Console.WriteLine("Exception that happens when a client disconnects nice and safe: " + e.ToString());
                    break;
                }
                catch (IOException e)
                {
                    Console.WriteLine("IOException: " + e.ToString());
                    break;
                }
            }

            if (peer is DeveServerStreamSocket)
            {
                ((DeveServerStreamSocket)peer).RemoveClient(this);
            }

            peer.AddDeveIncomingMessage(new DeveIncomingMessageStreamSocket(this, new byte[2] { (byte)DeveMessageTypeStreamSocket.StatusChanged, (byte)NetworkStatusStreamSocket.Disconnected }));
        }
コード例 #2
0
ファイル: DevePeer.cs プロジェクト: devedse/TurtleTurner2000
 internal void AddDeveIncomingMessage(DeveIncomingMessageStreamSocket devInc)
 {
     messages.Enqueue(devInc);
 }