Java WiFi关闭时套接字绑定失败
我构建了一个应用程序,它有一项服务,包含用于在LAN中接收消息的套接字。当WiFi打开时,它可以正常工作,但当我在WiFi关闭状态下启动应用程序时,它会出现套接字绑定失败的错误,即使我打开WiFi,它也无法工作 是否有任何方法可以在WiFi打开时在应用程序中得到通知,以便我可以再次启动该特定服务,或者有任何其他方法绑定套接字,以便它可以在WiFi关闭状态下正确绑定。 我目前的代码是:Java WiFi关闭时套接字绑定失败,java,android,sockets,service,network-programming,Java,Android,Sockets,Service,Network Programming,我构建了一个应用程序,它有一项服务,包含用于在LAN中接收消息的套接字。当WiFi打开时,它可以正常工作,但当我在WiFi关闭状态下启动应用程序时,它会出现套接字绑定失败的错误,即使我打开WiFi,它也无法工作 是否有任何方法可以在WiFi打开时在应用程序中得到通知,以便我可以再次启动该特定服务,或者有任何其他方法绑定套接字,以便它可以在WiFi关闭状态下正确绑定。 我目前的代码是: socket = new DatagramSocket(port, broadcastIP);
socket = new DatagramSocket(port, broadcastIP);
DatagramPacket packet = new DatagramPacket(recvBuf, recvBuf.length);
socket.receive(packet);
如果WiFi关闭,则在创建DatagramSocket实例时可能会出现SocketException,因为无法将套接字绑定到传递的IP地址。此外,如果网络接口关闭,它没有任何IP地址 也许您应该先询问设备中的网络接口,然后检查每个接口的状态。如果接口已启动,则获得IP地址,然后可以创建绑定到该地址的套接字
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netIf : Collections.list(nets))
{
System.out.println("Display name: " + netIf.getDisplayName());
System.out.println("Name: " + netIf.getName());
if (netIf.isUp()) //Is the interface up
{
Enumeration<InetAddress> inetAddresses = netIf.getInetAddresses();
for (InetAddress inetAddress : Collections.list(inetAddresses))
{
System.out.println("InetAddress: " + inetAddress);
}
}
}
Enumeration nets=NetworkInterface.getNetworkInterfaces();
用于(网络接口netIf:Collections.list(网络))
{
System.out.println(“显示名称:+netIf.getDisplayName());
System.out.println(“Name:+netIf.getName());
if(netIf.isUp())//接口是否正常
{
枚举inetAddresses=netIf.getInetAddresses();
用于(InetAddress:Collections.list(inetAddresses))
{
System.out.println(“InetAddress:+InetAddress”);
}
}
}
看这里:
在这里:
我的回答对你有用吗?