我想发送一个包含一些参数的字节数组。
但是函数BitConverter.GetBytes()
只得到一个参数。所以我做了一些事情,但看起来并不那么聪明。如果有人知道我怎么能做得更好,所以我很乐意学习如何。我的代码:
IDMessage = 4; // Length ID Message
byte[] byteToSendLocation = new byte[20];
byteToSendLocation = BitConverter.GetBytes(IDMessage);
IDObserver =2;
byte[] byteToSendIDObserver = new byte[20];
byteToSendIDObserver = BitConverter.GetBytes(IDObserver);
Lenght = double.Parse(LenghtTXT.Text);
Lenght = Lenght * Math.Pow(10, 5);
byte[] byteToSendLenght = new byte[20];
byteToSendLenght = BitConverter.GetBytes(Lenght);
byte[] byteToSend = new byte[100];
Array.Copy(byteToSendLocation, 0, byteToSend, 0, byteToSendLocation.Length);
Array.Copy(byteToSendIDObserver, 0, byteToSend, 20, byteToSendIDObserver.Length);
Array.Copy(byteToSendLenght, 0, byteToSend, 60, byteToSendLenght.Length);
//Send Location Message
client.GetStream().Write(byteToSend, 0, byteToSend.Length);
答案 0 :(得分:0)
辅助函数会缩短它:
public void SendBytes(MemoryStream ms, byte[] bytes)
{
ms.Write(bytes, 0, bytes.Length);
}
然后您的代码段变为
// var client = new TcpClient();
var ms = new MemoryStream();
int IDMessage = 4; // Length ID Message
SendBytes(ms, BitConverter.GetBytes(IDMessage));
int IDObserver = 2;
SendBytes(ms, BitConverter.GetBytes(IDObserver));
Lenght = double.Parse(LenghtTXT.Text)
Lenght = Lenght * Math.Pow(10, 5);
SendBytes(ms, BitConverter.GetBytes(Lenght));
byte[] allBytes = ms.ToBytes();
client.GetStream().SendBytes(allBytes, 0, allBytes.Length);