Java 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);

我构建了一个应用程序,它有一项服务,包含用于在LAN中接收消息的套接字。当WiFi打开时,它可以正常工作,但当我在WiFi关闭状态下启动应用程序时,它会出现套接字绑定失败的错误,即使我打开WiFi,它也无法工作

是否有任何方法可以在WiFi打开时在应用程序中得到通知,以便我可以再次启动该特定服务,或者有任何其他方法绑定套接字,以便它可以在WiFi关闭状态下正确绑定。 我目前的代码是:

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”);
}
}
}
看这里: 在这里:

我的回答对你有用吗?