通过(C#)

时间:2016-10-27 13:32:31

标签: c# network-programming tcpclient

早上好,

我是网络编程的新手,但一直在做研究,并掌握了设置服务器/客户端应用程序的基础知识。我想通过TCP从服务器向客户端发送二进制数据,以根据某些字段长度解析并打印出整数。

我基本上是创建一个虚拟服务器来发送网络数据,并希望我的客户端解析它。

我的想法是创建一个字节数组:byte [] data = {1,0,0,0,1,0,0,1)来表示正在设置的8个字节。例如,客户端将读取前2个字节并打印2然后接下来的6个字节并打印9.

这是一个简单的例子。我想发送的字节数组是864字节。我会解析第一个96,48,48等。

这是一个很好的方法吗?如果没有,我应该如何发送1和0?我发现很多例子发送字符串,但我想发送二进制数据。

感谢。

1 个答案:

答案 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客户端和侦听器有很好的参考。

hasOfferCatalog

https://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener(v=vs.110).aspx