Add a listLocalAddresses and move listBroadcastAddresses to NetUtil
This commit is contained in:
parent
f5848e1ab3
commit
fde0d4344b
2 changed files with 45 additions and 22 deletions
|
@ -5,10 +5,6 @@ import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.*;
|
import java.net.*;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Enumeration;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class NetDiscoverer {
|
public class NetDiscoverer {
|
||||||
private static final short DISCOVERY_PORT = 31593;
|
private static final short DISCOVERY_PORT = 31593;
|
||||||
|
@ -94,7 +90,7 @@ public class NetDiscoverer {
|
||||||
public void run() {
|
public void run() {
|
||||||
byte[] buf = broadcastMessage.getBytes();
|
byte[] buf = broadcastMessage.getBytes();
|
||||||
try {
|
try {
|
||||||
for (InetAddress broadcastAddr : listAllBroadcastAddresses()) {
|
for (InetAddress broadcastAddr : NetUtil.listAllBroadcastAddresses()) {
|
||||||
DatagramSocket broadcastSocket = new DatagramSocket();
|
DatagramSocket broadcastSocket = new DatagramSocket();
|
||||||
broadcastSocket.setBroadcast(true);
|
broadcastSocket.setBroadcast(true);
|
||||||
broadcastSocket.send(new DatagramPacket(buf, buf.length, broadcastAddr, DISCOVERY_PORT));
|
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 {
|
private interface BroadcastReceivedCallback {
|
||||||
void onBroadcastReceived(InetAddress ipAddr, String data);
|
void onBroadcastReceived(InetAddress ipAddr, String data);
|
||||||
}
|
}
|
||||||
|
|
44
src/main/java/fr/insa/clavardator/network/NetUtil.java
Normal file
44
src/main/java/fr/insa/clavardator/network/NetUtil.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue