我正在使用以下代码将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;
}
}