[英]How to send just two integer values in one time to TCP Server from Android phone?
我正在使用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)”以實現高延遲。 現在我的代碼可以正常工作了。
您的代碼中有很多錯誤。 首先,當您這樣做時:
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.