BinaryWriter writer = new BinaryWriter(new MemoryStream()); writer.Write((byte)0xFF); writer.Write((byte)packetId); writer.Write((short)0); writer.Writer(...); // your data writer.Position = 2; writer.BaseStream.Write((short)writer.BaseStream.Length); yourSocket.Send(((MemoryStream)writer.BaseStream).ToArray[]);