2011-11-29 146 views
0

我正在製作一個與服務器通信的Android應用程序。當Android手機收到短信時,我希望它通過套接字發送給我的服務器。Android應用程序通過插座與服務器通信

公共類服務器{

public static final int PORT = 8080; 
public static void main(String[] args) throws IOException { 
    ServerSocket s = new ServerSocket(PORT); 
    try { 
     Socket socket = s.accept(); 
     try { 
      BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      String str = in.readLine(); 
      System.out.println(str); 
     } 
     finally { 
      socket.close(); 
     } 
    } 
    finally { 
     s.close(); 
    } 
} 

}

這是我的客戶:

public Client(String message){ 

    try { 
     Socket socket = new Socket("127.0.0.1", 8080); 
     PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); 
     out.println(message); 
     socket.close(); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

林沒有得到時,即時通訊呼叫從Android應用客戶端類的任何連接。 任何人都知道如何解決這個問題?

從onReceive(Context context,Intent intent){方法在手機上收到消息時調用類'Client'。

+0

什麼是你的錯誤?請發佈堆棧跟蹤。另外,你是在模擬器還是真實設備上測試它? – MByD

+0

沒有堆棧跟蹤,因爲服務器正在等待響應。我運行一個模擬器並等待Java應用程序中運行的程序的響應。 – rtc11

+0

你可以使用簡單的telnet測試你的服務器套接字嗎? –

回答

1

我解決了它,忘記它添加到我的androidmanifest.xlm

< uses-permission android:name="android.permission.INTERNET">< /uses-permission> 
2

您的Android客戶端正試圖創建一個連接到IP 127.0.0.1的套接字,這是一個環回地址。你基本上是試圖連接到自己

變化

Socket socket = new Socket("127.0.0.1", 8080); 

Socket socket = new Socket("your server's IP", 8080); 

請不要隨便將其更改爲「服務器的IP」 :)使其192.168.1.104或任何服務器地址在網絡上。

+0

現在我在使用IPV4地址。當我用telnet測試它時,我得到一個響應,所以我知道有一個連接。但它仍然不會干擾android應用程序。 – rtc11

+0

您使用的是網絡本地的外部IP地址還是IP地址? – dymmeh

+0

這是一個本地地址,我在我的筆記本電腦上運行服務器應用程序和Android模擬器。 – rtc11

相關問題