2014-02-06 86 views
0

我有一些嚴重的問題,我的android應用程序和我的java程序與數據報套接字之間進行通信。我的Android應用程序應該是在客戶端和有插座等:下面的代碼使用android應用程序和java程序之間的數據報套接字

try { 
     InetAddress ipAdress  = InetAddress.getLocalHost(); 
     int portNo     = 4324; 
     DatagramSocket clientSocket = new DatagramSocket(); 
     String sendString   = "&%#!check_connection!#%&"; 
     DatagramPacket packet  = new DatagramPacket(sendString.getBytes(), sendString.length(), ipAdress, portNo);    
     clientSocket.send(packet); 

     // Receive response 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

我的Java程序應該得到這樣的:

while(waitingForClient) { 
          try { 
           System.out.println("test 1"); 
           DatagramPacket packet = new DatagramPacket(receiveData, receiveData.length); 
           System.out.println("test 2"); 
           serverSocket.receive(packet); 
           System.out.println("test 3"); 
           String getData = new String(packet.getData()); 
           System.out.println(getData); 
           mainFrame.logArea.append(getData + "\n"); 

          } catch (Exception e) { 
           e.printStackTrace(); 
          } 
         } 

所有的代碼在Android應用程序執行,但在我的Java程序的代碼,它只是達到「測試2」(從不打印出測試3)...

我的兩個Android設備與我的電腦連接到同一個路由器..

任何幫助,將不勝感激:)

回答

0
InetAddress ipAdress  = InetAddress.getLocalHost(); 

您的Android應用程序試圖連接到自身,通過在計算機的IP地址上運行Java程序

+0

但是,如果我想只能在本地使用,是不是getLocalHost()正確? 我也嘗試InetAddress.getByName(「127.0.0.1」); ..具有相同結果 – Langkiller

+0

@ user68621'127.0.0.1'是本地主機地址,它是運行代碼的設備的地址。這不是任何連接到你的無線路由器的地址。您正在從android應用程序向android手機發送消息。 –

+0

是啊,我知道,我只是認爲它應該這樣做,當兩端都連接到samme網絡......那麼如何獲得接收Java程序的IP地址? – Langkiller

相關問題