Add a listLocalAddresses and move listBroadcastAddresses to NetUtil

This commit is contained in:
Yohan Simard 2020-12-07 14:21:55 +01:00
parent f5848e1ab3
commit fde0d4344b
2 changed files with 45 additions and 22 deletions

View file

@ -5,10 +5,6 @@ import org.jetbrains.annotations.Nullable;
import java.io.IOException;
import java.net.*;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Objects;
public class NetDiscoverer {
private static final short DISCOVERY_PORT = 31593;
@ -94,7 +90,7 @@ public class NetDiscoverer {
public void run() {
byte[] buf = broadcastMessage.getBytes();
try {
for (InetAddress broadcastAddr : listAllBroadcastAddresses()) {
for (InetAddress broadcastAddr : NetUtil.listAllBroadcastAddresses()) {
DatagramSocket broadcastSocket = new DatagramSocket();
broadcastSocket.setBroadcast(true);
broadcastSocket.send(new DatagramPacket(buf, buf.length, broadcastAddr, DISCOVERY_PORT));
@ -231,23 +227,6 @@ public class NetDiscoverer {
}
static List<InetAddress> listAllBroadcastAddresses() throws SocketException {
List<InetAddress> broadcastList = new ArrayList<>();
final Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface networkInterface = interfaces.nextElement();
if (!networkInterface.isLoopback() && networkInterface.isUp()) {
networkInterface.getInterfaceAddresses().stream()
.map(InterfaceAddress::getBroadcast)
.filter(Objects::nonNull)
.forEach(broadcastList::add);
}
}
return broadcastList;
}
private interface BroadcastReceivedCallback {
void onBroadcastReceived(InetAddress ipAddr, String data);
}

View file

@ -0,0 +1,44 @@
package fr.insa.clavardator.network;
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Objects;
public class NetUtil {
public static List<InetAddress> listAllBroadcastAddresses() throws SocketException {
List<InetAddress> broadcastList = new ArrayList<>();
final Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface networkInterface = interfaces.nextElement();
if (!networkInterface.isLoopback() && networkInterface.isUp()) {
networkInterface.getInterfaceAddresses().stream()
.map(InterfaceAddress::getBroadcast)
.filter(Objects::nonNull)
.forEach(broadcastList::add);
}
}
return broadcastList;
}
public static List<InetAddress> listAllLocalAddresses() throws SocketException {
List<InetAddress> localList = new ArrayList<>();
final Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface networkInterface = interfaces.nextElement();
if (!networkInterface.isLoopback() && networkInterface.isUp()) {
networkInterface.getInterfaceAddresses().stream()
.map(InterfaceAddress::getAddress)
.filter(Objects::nonNull)
.forEach(localList::add);
}
}
return localList;
}
}