作为“协议”的一部分,我有一个Enum
在客户端和服务器之间共享的 ,它指示如何处理其余数据
客户:
byte[] outStream = Encoding.UTF8.GetBytes((int)Shared.CommandType.ClientJoin + "sometext");
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
在服务器端:
string dataFromClient = null;
byte[] bytesFrom = new byte[1024];
NetworkStream networkStream = tcpclient.GetStream();
int bytesread = networkStream.Read(bytesFrom, 0, bytesFrom.Length);
Byte[] commandBytes = new Byte[4];
Array.Copy(bytesFrom, commandBytes, 4);
dataFromClient = Encoding.UTF8.GetString(bytesFrom, 4, bytesread - 4);
//test values
int receivedcommand = BitConverter.ToInt32(commandBytes, 0);
int actualcommand = (int)Shared.CommandType.ClientJoin;
但是,收到的“值”(测试中的 1634222896)与实际值(0)大不相同
我确定我做错了什么,与字节数组拆分有关,但我一生都看不到什么
有任何想法吗?
(与往常一样,如果有比上述更好的实施方法,我愿意接受建议:))