簡體   English   中英

如何一次僅從Android手機向TCP Server發送兩個整數值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM