public static void SendSingleMessage(TcpClient client, NetworkMessage message, PlayerInfo playerInfo) { message.playerInfo = playerInfo; byte[] data = NetworkConverter.Serialize(message); byte[] header = BitConverter.GetBytes(data.Length); client.GetStream().Write(header, 0, header.Length); client.GetStream().Write(data, 0, data.Length); }
public static NetworkMessage ReceiveSingleMessage(TcpClient client) { byte[] dataBuffer = new byte[4]; int headerLength = 0, msgDataLength = 0, msgReadLength = 0; do { headerLength += client.GetStream().Read(dataBuffer, 0, 4 - headerLength); } while (headerLength < 4); msgDataLength = BitConverter.ToInt32(dataBuffer, 0); dataBuffer = new byte[msgDataLength]; do { msgReadLength += client.GetStream().Read(dataBuffer, 0, msgDataLength - msgReadLength); } while (msgReadLength < msgDataLength); return(NetworkConverter.Deserialize(dataBuffer)); }