簡體   English   中英

創建套接字導致無法訪問網絡-ENETUNREACH

[英]Creating a socket leads to Network is unreachable - ENETUNREACH

我在創建套接字時遇到問題。 錯誤如下

java.net.ConnectException:無法連接到/192.168.1.103(端口23):連接失敗:ENETUNREACH(網絡不可達)

這是我的代碼的一部分

WifiConfiguration wifiConfiguration = new WifiConfiguration();

wifiConfiguration.SSID = "\"" + wifiName + "\"";
wifiConfiguration.preSharedKey = "\"" + password + "\"";

WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
int networkId = wifiManager.addNetwork(wifiConfiguration);

if (networkId != -1) 
{
   wifiManager.enableNetwork(networkId, true);
   new Thread(new GetMacThread()).start();
}

class GetMacThread implements Runnable{
private Socket socket;
private int portNumber = 23;
private String myIP = "192.168.1.103";
@Override
public void run() 
{

    try {

        socket = new Socket(myIP, portNumber);
        System.out.println("Socket Thread:"+socket);
    } catch (UnknownHostException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }

我非常確定這不是網絡問題(IP和端口都很好,我還在清單中添加了權限),因為我已通過連接的WIFI網絡對其進行了測試,並注釋了行wifiManager.enableNetwork(networkId, true)和套接字已正確制作。 程序當時正在運行。 因此,問題在於,它僅適用於先前打開的WiFi。

我還嘗試在創建套接字之前先檢查與ConnectivityManager的wifi連接,但它什么都沒有改變。

您是否知道為什么套接字按此特定順序失敗?

在類似情況下, ConnectivityManager.bindProcessToNetwork()方法可以幫助我。 您可以在這里找到更多信息-https: //android-developers.googleblog.com/2016/07/connecting-your-app-to-wi-fi-device.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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