public void ReadData(ByteArrayReaderWriter stream) { byte addressVal = stream.ReadByte(); // if address type is not 0 or 1, data is not valid if (addressVal != 0 && addressVal != 1) { throw new FormatException(); } this.AddressType = (NetcodeAddressType)addressVal; IPAddress ip = null; if (this.AddressType == NetcodeAddressType.IPv4) { stream.ReadBytesIntoBuffer(tempIPV4, 4); ip = new IPAddress(tempIPV4); } else { stream.ReadBytesIntoBuffer(tempIPV6, 16); ip = new IPAddress(tempIPV6); } var port = stream.ReadUInt16(); this.Endpoint = new IPEndPoint(ip, port); }
protected void processPacket(ushort seq, byte[] packetData, int packetLen) { using (ByteArrayReaderWriter byteArrayReaderWriter = ByteArrayReaderWriter.Get(packetData)) { while (byteArrayReaderWriter.ReadPosition < packetLen) { ushort num = byteArrayReaderWriter.ReadUInt16(); ushort num2 = readVariableLengthUShort(byteArrayReaderWriter); if (num2 != 0) { if (!receiveBuffer.Exists(num)) { BufferedPacket bufferedPacket = receiveBuffer.Insert(num); bufferedPacket.buffer.SetSize(num2); byteArrayReaderWriter.ReadBytesIntoBuffer(bufferedPacket.buffer.InternalBuffer, num2); } else { byteArrayReaderWriter.SeekRead(byteArrayReaderWriter.ReadPosition + (int)num2); } while (receiveBuffer.Exists(nextReceive)) { BufferedPacket bufferedPacket2 = receiveBuffer.Find(nextReceive); ReceiveCallback(ChannelID, bufferedPacket2.buffer.InternalBuffer, bufferedPacket2.buffer.Length); receiveBuffer.Remove(nextReceive); nextReceive++; } } } } }