C# 从套接字到字节数组读取字节

C# 从套接字到字节数组读取字节,c#,java,sockets,networking,C#,Java,Sockets,Networking,我正在使用一个客户机/服务器应用程序,在这个应用程序中,我必须从服务器上接收的数据中读取字节。我试图将它从Java转换为C,但我似乎无法解决这个问题!T Java代码: byte[] bucket = new byte[4]; this.socket.getInputStream().read(bucket, 0, 2); 现在我需要同样的C代码!希望你能帮助我 的示例代码中有一个超级简单的http服务器实现。该示例显示如何从套接字读取数据。您可能需要使用 编辑:假设您已经可以访问套接字,请尝

我正在使用一个客户机/服务器应用程序,在这个应用程序中,我必须从服务器上接收的数据中读取字节。我试图将它从Java转换为C,但我似乎无法解决这个问题!T

Java代码:

byte[] bucket = new byte[4];
this.socket.getInputStream().read(bucket, 0, 2);

现在我需要同样的C代码!希望你能帮助我

的示例代码中有一个超级简单的http服务器实现。该示例显示如何从套接字读取数据。

您可能需要使用

编辑:假设您已经可以访问套接字,请尝试以下操作(使用):


如果您想要一个类似的端口,最明智的做法可能是将套接字包装在
网络流
中,这与
getInputStream
结果非常相似(除非您只执行一次),即


但请记住,当您完成时(理想情况下通过
使用
),请确保
ns
已被释放。如果你想直接使用套接字,你必须在套接字上使用
Receive
方法。

没什么,我一直在用谷歌搜索,但我仍在学习很多东西,我真的不知道如何解决这个问题@法比安帕斯先试试。如果您仍然有问题,我们将在这里提供帮助。我是否可以使用套接字创建一个新的NetworkStream对象,并使用其中的读取方法?很抱歉,实际上是服务器接收数据,我只能访问套接字。@FabianPas:更新了答案。如果没有帮助,请告诉我。如果我使用socket.Receive,它会只分配消息的前4个字节吗?因为这是字节数组的大小?如果我想接收某个偏移量呢?@Fabian还有其他重载需要接收。对Read的调用目前只读取2个字节(最大),顺便说一句-并且可能更少。引用java文档:从输入流中读取多达len字节的数据到一个字节数组中。尝试读取多达len字节的数据,但可能读取较小的数据,可能为零。实际读取的字节数作为整数返回。@Fabian事实上,我想说的是,java代码没有捕获返回值这一事实告诉我java代码有缺陷。
   TcpClient client = new TcpClient(server, port);
   NetworkStream stream = client.GetStream();
   Byte[] data = new Byte[4;
   stream.Read(data, 0, data.Length);
   byte[] bucket = new byte[4];
   int bytesRec = socket.Receive(bucket);
var ns = new NetworkStream(socket);
...
int bytesRead = ns.Read(bucket, 0, 2);