创建套接字导致网络无法访问 - ENETUNREACH

时间:2016-10-12 13:08:52

标签: android

我在创建套接字时遇到问题。错误如下

  

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连接,但它没有改变任何内容。

您是否知道套接字在此特定顺序中失败的原因?

1 个答案:

答案 0 :(得分:0)