Advertisement
Guest User

Untitled

a guest
Dec 19th, 2014
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.26 KB | None | 0 0
  1. public BaseInputPacket WaitPacket(TcpClient client, long timeoutMillis)
  2.         {
  3.             Stopwatch timer = Stopwatch.StartNew();
  4.             NetworkStream stream = client.GetStream();
  5.             BaseInputPacket packet = null;
  6.             while (!stream.DataAvailable)
  7.             {
  8.         if (timer.ElapsedMilliseconds > timeoutMillis)
  9.         {
  10.             timer.Stop();
  11.                     return null;
  12.         }
  13.         }
  14.                 //reading header
  15.                 byte[] packetHeader = new byte[24];
  16.                 stream.Read(packetHeader, 0, packetHeader.Length);
  17.                 uint packetType = BitConverter.ToUInt32(packetHeader, 8);
  18.                 uint dataLength = BitConverter.ToUInt32(packetHeader, 12);
  19.                 //if header is OK, create and parse new packet
  20.                 if (mInputPackets[(PacketType) packetType] != null)
  21.                 {
  22.                     packet = (BaseInputPacket)Activator.CreateInstance(mInputPackets[(PacketType) packetType]);
  23.                     packet.Parse(stream, dataLength);
  24.                 }
  25.                 else
  26.                 {
  27.                     throw new Exception("Unknown packet received!");    
  28.                 }
  29.             }
  30.        
  31.             timer.Stop();
  32.            
  33.             return packet;
  34.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement