早上好,
我是网络编程的新手,但一直在做研究,并掌握了设置服务器/客户端应用程序的基础知识。我想通过TCP从服务器向客户端发送二进制数据,以根据某些字段长度解析并打印出整数。
我基本上是创建一个虚拟服务器来发送网络数据,并希望我的客户端解析它。
我的想法是创建一个字节数组:byte [] data = {1,0,0,0,1,0,0,1)来表示正在设置的8个字节。例如,客户端将读取前2个字节并打印2然后接下来的6个字节并打印9.
这是一个简单的例子。我想发送的字节数组是864字节。我会解析第一个96,48,48等。
这是一个很好的方法吗?如果没有,我应该如何发送1和0?我发现很多例子发送字符串,但我想发送二进制数据。
感谢。
答案 0 :(得分:1)
您似乎混淆了位和字节。 一个字节由8位组成,可以表示0到255之间的整数值。 因此,不是发送{1,0,0,0,1,0,0,1},拆分字节数组并将字节解析为位以获得2和9,您可以简单地创建数组:
byte[] data={2,9};
要发送其他原始数据类型(int,long,float,double ...),可以将它们转换为字节数组。
int x=96;
byte[] data=BitConverter.GetBytes(x);
然后可以将字节数组写入流
stream.Write(data,0,data.Length);
在客户端,将字节数组解析为:
int x=BitConverter.ToInt32(data,startIndex);
MSDN对TCP客户端和侦听器有很好的参考。
https://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener(v=vs.110).aspx