我在创建套接字时遇到问题。错误如下
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连接,但它没有改变任何内容。
您是否知道套接字在此特定顺序中失败的原因?
答案 0 :(得分:0)