private Packet ReceivePacket() { byte[] bytes = new byte[PacketHeader.SIZE_IN_BYTES]; socket.Receive(bytes, 0, bytes.Length, SocketFlags.None); PacketHeader header = PacketSerializer.deserializeHeader(bytes); byte[] payload = new byte[header.GetLength()]; socket.Receive(payload, 0, payload.Length, SocketFlags.None); return(new Packet(header, payload)); }
public static byte[] serialize(Packet packet) { MemoryStream stream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(stream); PacketHeader header = packet.GetHeader(); writer.Write(System.Text.Encoding.ASCII.GetBytes(header.GetMagic())); writer.Write(IPAddress.HostToNetworkOrder(header.GetVersion())); writer.Write(IPAddress.HostToNetworkOrder(header.GetLength())); writer.Write(System.Text.Encoding.ASCII.GetBytes(header.GetPacketType())); writer.Write(packet.GetPayload()); return(stream.ToArray()); }