【发布时间】:2019-10-09 23:42:37
【问题描述】:
我已经编写了一些代码,用于在发送之前使用具有已知大小的 NetworkStream 发送 byte[] 数组,但是发送的数据和接收的数据在某些位置是不同的。
MAXSIZE 是我要发送的数据的已知大小。
public static void SendBytes(TcpClient clientSocket, byte[] outStream)
{
Debug.WriteLine("SendBytes() number of bytes: " + outStream.Length.ToString());
NetworkStream serverStream = clientSocket.GetStream();
serverStream.Write(outStream, 0, outStream.Length);
//serverStream.Flush();
}
public static byte[] ReceiveBytes(TcpClient clientSocket, int MAX_SIZE)
{
Debug.WriteLine("[" + DateTime.Now.ToString("G") + "] - " + "ReceiveBytes() started.");
NetworkStream networkStream = clientSocket.GetStream();
byte[] bytesFrom = new byte[MAX_SIZE];
clientSocket.ReceiveBufferSize = MAX_SIZE;
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
Debug.WriteLine("[" + DateTime.Now.ToString("G") + "] - " + "ReceiveBytes(), received number of raw bytes: " + bytesFrom.Length.ToString());
return CommonUtils.SubArray(bytesFrom, 0, MAX_SIZE);
}
如果发送数据(十六进制字节):a7 fc d0 51 0e 99 cf 0d 00 ,接收到的数据为:a7 fc d0 51 0e 99 cf 0d 53
【问题讨论】:
-
不是一个答案,但你真的应该更加小心你的变量名。例如,
outStream不是一个流,因此如果您希望更明确一些,请考虑使用data或dataToSend之类的内容。
标签: c# arrays networkstream