C# 无法接收放入套接字(java中的write())的数据(cpp中的recv)

C# 无法接收放入套接字(java中的write())的数据(cpp中的recv),c#,java,android,C#,Java,Android,我不熟悉套接字编程,所以为了测试某些情况,我正在使用java端客户端通过套接字发送整数数据,我希望在cpp中的服务器端接收该数据 我在客户端java上的代码如下所示 out=new DataOutputStream(s.getOutputStream()); ar=1; le=1; out.writeInt(ar); out.flush(); out.writeInt(le); out.flush(); if (int(recv(acceptFD, &number, sizeof

我不熟悉套接字编程,所以为了测试某些情况,我正在使用java端客户端通过套接字发送整数数据,我希望在cpp中的服务器端接收该数据

我在客户端java上的代码如下所示

out=new DataOutputStream(s.getOutputStream());
ar=1;
le=1;
out.writeInt(ar);
out.flush(); 
out.writeInt(le);
out.flush();
  if (int(recv(acceptFD, &number, sizeof(int), 0)) != sizeof(int))
  {
     ALOGE ("error reading on socket: number of Args: %d,reutrned value =%d\n",number);
    return;
  }

  for (int i = 0; i < number; i++) 
  {
    int len;
    if (recv(acceptFD, &len, sizeof(int), 0) != sizeof(int)) 
    {
        ALOGE ("error reading on socket: Len of Args: expected length :%d\n",len); 
         freeDebugCallbackArgs(i, args);
        return;
    }
im使用cpp中的recv函数来接收此数据。cpp端的代码如下所示

out=new DataOutputStream(s.getOutputStream());
ar=1;
le=1;
out.writeInt(ar);
out.flush(); 
out.writeInt(le);
out.flush();
  if (int(recv(acceptFD, &number, sizeof(int), 0)) != sizeof(int))
  {
     ALOGE ("error reading on socket: number of Args: %d,reutrned value =%d\n",number);
    return;
  }

  for (int i = 0; i < number; i++) 
  {
    int len;
    if (recv(acceptFD, &len, sizeof(int), 0) != sizeof(int)) 
    {
        ALOGE ("error reading on socket: Len of Args: expected length :%d\n",len); 
         freeDebugCallbackArgs(i, args);
        return;
    }
它显示日志为

E/RILC 235:套接字上的错误读取:参数数:16777216,返回值=-1073741824 E/RILC 235:套接字上的错误读数:Args的Len:预期长度:1075093557

如果有人对此给出答案,这将是一个很大的帮助。
谢谢

我强烈怀疑这是字节顺序的问题

用十六进制表示的数字16777206是0x01000000,在小端表示法中是1677206,但在大端表示法中是1


将数字作为字节数组读取,并包含代码以补偿Java源代码和C目标代码之间的不同字节顺序。

请说明如何声明数字。另外,recv的返回值是多少?number被声明为整数。返回值=-1073741824是recvcan的返回值,请更具体一些。这个小端和大端的概念总是让我很烦。你能给我举个例子吗。不同的计算机以不同的方式记录整数,最常见的两种方式被称为big-endian和little-endian,为了说明它是多么令人困惑,我在回答中把它倒过来了;请参阅以表示数字1,您可以使用四个字节00 01,最后一个是最低有效字节。您还可以使用四个字节01 00,其中最低有效字节排在第一位。连接的两端不使用相同的字节顺序,因此数字出现错误。您尝试将int转换为big-endian,但效果很好。非常感谢