通过c#发送二进制数据
本文关键字:二进制 数据 通过 | 更新日期: 2023-09-27 18:15:10
早上好
我是网络编程新手,但一直在做研究,并获得了设置服务器/客户端应用程序的基础知识。我想通过TCP将二进制数据从服务器发送到客户端,以解析并根据某些字段长度打印出整数。
我基本上创建了一个虚拟服务器来发送网络数据,并希望我的客户端解析它。
我的想法是创建一个字节数组:byte[] data ={1,0,0,0,1,0,0,1)来表示8个字节被设置。例如,客户端将读取前2个字节并打印2,然后是接下来的6个字节并打印9。
这是一个简单的例子。我想要发送的字节数组是864字节。我将解析前96、48、48等。
这会是一个好方法吗?如果不是,我应该如何发送1和0 ?我发现了许多发送字符串的例子,但我想发送二进制数据。
谢谢。
你似乎混淆了位和字节。一个字节由8位组成,可以表示0到255之间的整数值。因此,与其发送{1,0,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
https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient (v = vs.110) . aspx