如何从Android手机一次只向TCP服务器发送两个整数值?

时间:2014-03-22 18:26:26

标签: java android sockets tcp

我正在开发一个带有Java Server的Android应用程序。我想从我的Android客户端电话向Java Server发送两个整数值。我在想类似数组的东西。

    value1=3; value2 = -5;
    dout= new DataOutputStream(socket.getOutputStream());
    byte [] a = {value1,value2};
    dout.write(a,0,a.length);

我在Java Server上试过这个。但它不适合我。

  DataInputStream dIn = new DataInputStream(socket.getInputStream());
  int length = dIn.readInt();                    
  if(length>0) 
  {
  byte[] message = new byte[length];
  dIn.readFully(message, 0, message.length); 
  System.out.println(message);
  }

如何在服务器端阅读此内容?或者我如何一次只向服务器发送两个整数值并在服务器上读取?

编辑:我用这个改变了我的代码。

        value1=3; value2 = -5;
         dout= new DataOutputStream(socket.getOutputStream());
         dout.writeInt(value1);
         dout.writeInt(value2);

         dIn = new DataInputStream(socket.getInputStream());
        int value1 = dIn.readInt();  
         int value2 = dIn.readInt();     

我为高延迟添加了“setTcpNoDelay(true)”。现在我的代码很好用。

1 个答案:

答案 0 :(得分:0)

您的代码中有很多错误。首先,当你这样做:

int length = dIn.readInt(); 

它不会返回数组的长度。它会返回您发送的第一个值。在您的情况下length = 3

第二个错误:我们不打印这样的数组:

System.out.println(array);

如果您这样做,您将获得阵列地址(不确定)。如果要打印其内容,则应进行循环并打印每个元素。

为什么不这样做:

value1=3; value2 = -5;
dout= new DataOutputStream(socket.getOutputStream());
dout.writeInt(value1);
dout.writeInt(value2);

DataInputStream dIn = new DataInputStream(socket.getInputStream());
int value1 = dIn.readInt();  
int value2 = dIn.readInt();