通过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 ?我发现了许多发送字符串的例子,但我想发送二进制数据。

谢谢。

通过c#发送二进制数据

你似乎混淆了位和字节。一个字节由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