public SGCommand ReceiveStream(int player) { NetworkStream stream; if (m_clients[player] != null && m_clients[player].Connected) { stream = m_clients[player].GetStream(); } else { Debug.LogWarning("Trying to receive stream from disconnected player " + player); return(null); } if (stream.DataAvailable) { // Decode the first 32 bits to find the length of the remaining data byte[] dataSizeBytes = new byte[4]; stream.Read(dataSizeBytes, 0, 4); int dataSize = BitConverter.ToInt32(dataSizeBytes, 0); dataSize = IPAddress.NetworkToHostOrder(dataSize); //Debug.Log("Received data of size " + dataSize + " bytes"); // Receive the data // Convert size to bytes byte[] data = new byte[dataSize]; stream.Read(data, 0, dataSize); // Put the data into a BitStream BKSystem.IO.BitStream clientStream = new BKSystem.IO.BitStream(dataSize * 8); clientStream.Write(data); if (clientStream.Length > 0) { return(SGCommand.CreateCommandFromPacket(clientStream, player)); } } return(null); }