Skip to content

Commit 8effc8b

Browse files
committed
fix: multicast group joining in ipv6 networks on windows and fix device filtering in DeviceFinder
1 parent 41fe854 commit 8effc8b

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/main/java/com/pedro/sphynx/domain/MulticastService.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -113,18 +113,17 @@ private MulticastSocket createSocket(int port) {
113113
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
114114
while (interfaces.hasMoreElements()) {
115115
NetworkInterface networkInterface = interfaces.nextElement();
116-
117116
if (networkInterface.isUp() && !networkInterface.isLoopback()) {
118117
Enumeration<InetAddress> Addresses = networkInterface.getInetAddresses();
119118
while (Addresses.hasMoreElements()){
120119
ipAddress = Addresses.nextElement();
121120

122121
if (ipAddress instanceof Inet4Address){
122+
System.out.println("Entrando no grupo de multicast na interface: " + networkInterface.getName() + " porta: " + port);
123+
socket.joinGroup(new InetSocketAddress(group, PORT), networkInterface);
123124
break;
124125
}
125126
}
126-
System.out.println("Entrando no grupo de multicast na interface: " + networkInterface.getName() + " porta: " + port);
127-
socket.joinGroup(new InetSocketAddress(group, PORT), networkInterface);
128127
}
129128
}
130129
// socket.joinGroup(new InetSocketAddress(group, PORT), NetworkInterface.getByInetAddress(InetAddress.getByName("0.0.0.0")));
@@ -152,7 +151,7 @@ class DeviceFinder {
152151
private byte[] buffer = new byte[1024];
153152
private DatagramPacket responsePacket;
154153

155-
public ArrayList<List<String>> devices = new ArrayList<>();
154+
public List<List<String>> devices = new ArrayList<>();
156155

157156
@Autowired
158157
private LocalRepository localRepository;
@@ -186,6 +185,7 @@ public void Finder(boolean auto) {
186185

187186
socket.send(packet);
188187

188+
Thread.sleep(2000);
189189
socket.receive(responsePacket);
190190
String responseMessage = new String(responsePacket.getData(), 0, responsePacket.getLength());
191191

@@ -196,17 +196,26 @@ public void Finder(boolean auto) {
196196
e.printStackTrace();
197197
}
198198

199-
if (device.size() > 1 && !devices.contains(device) && !localsMacs.contains(device.get(1))) {
200-
devices.add(device);
201-
} else if (localsMacs.contains(device.get(1)) && devices.contains(device)) {
202-
devices.remove(device);
199+
if (device.size() > 1) {
200+
if (!devices.contains(device) && !localsMacs.contains(device.get(1))) {
201+
devices.add(device);
202+
} else if (localsMacs.contains(device.get(1)) && devices.contains(device)) {
203+
devices.remove(device);
204+
}
203205
}
204206

207+
System.out.println(device.toString());
208+
devices.forEach(d -> {
209+
if (localsMacs.contains(d.get(1))) {
210+
devices.remove(d);
211+
}
212+
});
213+
205214
System.out.println("Devices found: " + devices);
206215

207216
if (auto) {
208217
Thread.sleep(180000);
209-
}else {
218+
} else {
210219
break;
211220
}
212221
}

0 commit comments

Comments
 (0)