2014-11-20 43 views
2

我有一臺運行作爲接入點(又名WiFi熱點)的Android設備,它是運行此代碼:的Android的ServerSocket接受作爲WiFi熱點

serverSocket = new ServerSocket(serverPort); 

    serverSocket.setReuseAddress(true); 

    while (RUNNING) { 
     try { 
      final Socket socket = serverSocket.accept(); 

我也會有一些其他客戶端設備連接到這設備的wifi熱點,並嘗試連接到套接字,它將無法。

接入點的IP地址類似於192.168.43.1 ...所以我會嘗試從客戶端設備連接到192.168.43.1:8080,它不會工作。

但是,如果兩個設備都連接到另一個wifi網絡,serverSocket.accept();將工作得很好!我正在使用端口8080.

我需要告訴服務器套接字在接口「ap0」上接受嗎? (我能做到嗎?) 它是Android設備上的防火牆問題?

任何解決方案/想法/建議表示讚賞!

編輯:

我改變了端口8988和現在的作品就好了! ... 它可能是一個防火牆問題? 任何想法如何導航這個問題?

回答

0

是的,你也需要在服務器端打開套接字。

你應該嘗試的Android示例WiFiDirectDemo Android中遺留訪問:\Android\android-studio\sdk\samples\android-19\legacy只是將其導入到你的環境,給一個嘗試..

+0

,我改變了端口從8080到8988,現在它的工作原理。現在我想知道如何在80端口上工作! =) – ChrisVollo 2014-11-20 20:45:18

+0

@ 1024以下的ChrisVollo端口是爲系統保留的。你爲什麼需要80端口? – 5er 2014-11-20 21:05:53

+0

找到了解決方案。我更改了iptbles以將端口80上的所有流量重定向到端口8080。 – ChrisVollo 2014-11-20 21:23:20