我正在使用以下代码将DatagramPacket发送到给定地址:

InetAddress address = InetAddress.getByName(anIPAddress);

DatagramSocket socket = new DatagramSocket();
DatagramPacket packet = new DatagramPacket(packetBytes, packetBytes.length,
    address, port);

socket.send(packet);
socket.close();

它工作正常,但是当没有可用的互联网连接时,为什么此代码不会抛出任何Exception

我同时关闭了Wi-Fi和移动数据,并且该代码仍然可以执行,没有任何错误。

有没有办法确保实际发送数据包?

(我不在乎是否到达目的地,我只是想确保它已发送)

最佳答案

您可以使用NetworkInterface.getNetworkInterfaces();来检查可用的接口(interface)。
然后,您可以使用ni.isUp()进行检查。

Enumeration<NetworkInterface> nets=NetworkInterface.getNetworkInterfaces();
for(int i=0; nets.hasMoreElements(); ++i) {
    NetworkInterface ni=nets.nextElement();
    if (ni.isUp() && !ni.getName().equals("lo")) {
        //ni is not local
        break;
    }
}

09-10 13:21
查看更多