我正在开发一个带有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)”。现在我的代码很好用。
答案 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();