2011-05-18 161 views
0

我在android中創建了一個android應用程序和一個Java服務器。在Android中建立Java服務器和客戶端之間的連接appEDIT

但我遇到了以下問題:我的客戶端(Android部分)使用android環回地址連接到端口6000上的本地計算機。

我的服務器(在Java中)在本地計算機上監聽端口6000 - 但是我必須使用什麼IP來獲取接受客戶端的套接字?

InetSocketAddress serverAddr = new InetSocketAddress(SERVERIP,serverPort); 
serverSocket = new ServerSocket(); 
serverSocket.bind(serverAddr); 

那麼我必須使用什麼樣的SERVERIP呢?

更新:我的客戶端在模擬器上運行!!!!!

編輯:

公共類ClientThread實現Runnable { 對象syncToken;

public ClientThread(Object syncToken) { 
     this.syncToken = syncToken; 
    } 

    public void run() { 
     try { 
      InetAddress serverAddr = InetAddress.getByName(serverIpAddress); 

      socket = new Socket(serverAddr, 50458); 


     } catch (UnknownHostException e) { 
      System.err.println("Don't know about host"); 
     } catch (IOException e) { 
      System.err 
        .println("Couldn't get I/O for the connection to host"); 
     } 

     try { 
      out = new PrintStream(socket.getOutputStream()); 
     } catch (IOException e) { 

      System.out.println(e); 
     } 

     while (true) { 
      synchronized (syncToken) { 
       try { 
        syncToken.wait(); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 

     } 

    } 
} 

這裏是:私人字符串serverIpAddress = 「10.0.2.2」 !!!!!

+0

你的意思是localhost? 127.0.0.1? – 2011-05-18 13:29:06

+0

我不知道這是我應該使用什麼? – stoycely 2011-05-18 13:30:47

+0

好吧,它看起來像混亂增長:)你介意給我們顯示你在客戶端連接的確切代碼嗎?你的意思是「android環回地址」究竟是什麼意思? – 2011-05-18 13:37:41

回答

0

你想在Android上運行服務器部分?我想不是,在這種情況下,使用環回地址並不會真正起作用,因爲Android系統上的環回接口會循環回到Android機器本身,因此不會路由到外部。

+0

他可能在模擬器上運行它,這就是爲什麼它在同一臺機器上連接。 – 2011-05-18 13:31:39

+0

這也不起作用 - 仿真器模擬完整的系統,具有自己的內核,TCP堆棧和回送接口。 – 2011-05-18 13:34:14

+0

好....我用我的客戶端的迴環android地址...問題是我應該用什麼服務器是在Java? – stoycely 2011-05-18 13:35:14

0

對於serverAddr,使用#InetSocketAddress(int port)構造函數,它指定通配符地址和特定的端口,這意味着它監聽機器的所有接口。

編輯:爲了獲得最佳效果,在android設備上使用服務器的DNS名稱來連接它。

2

http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking:如果要在模擬器內與本地主機通信,請在本地主機上使用IP 127.0.0.1,並在Android中使用IP 10.0.2.2。這應該讓你在Android客戶端和本地主機服務器之間進行通信。

+0

謝謝你!!! :)這是我所需要的:) – stoycely 2011-05-18 13:43:12

+0

很高興知道這對你有用。 – Femi 2011-05-18 13:46:22

+0

哇,不知道10.0.2.2路由到外部的環回。任何想法,如果它從一開始就可用? – 2011-05-18 13:47:44

相關問題