1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-17 22:23:10 +03:00

Zeroconf services may have multiple IP addresses: let's consider them all

This commit is contained in:
Federico Fissore
2013-07-22 10:06:21 +02:00
parent e6b11c44f6
commit b0f1516729

View File

@ -93,34 +93,36 @@ public class NetworkDiscovery implements Discovery, ServiceListener, cc.arduino.
@Override @Override
public void serviceResolved(ServiceEvent serviceEvent) { public void serviceResolved(ServiceEvent serviceEvent) {
ServiceInfo info = serviceEvent.getInfo(); ServiceInfo info = serviceEvent.getInfo();
String address = info.getInet4Addresses()[0].getHostAddress(); for (InetAddress inetAddress : info.getInet4Addresses()) {
String name = serviceEvent.getName(); String address = inetAddress.getHostAddress();
String name = serviceEvent.getName();
PreferencesMap prefs = null; PreferencesMap prefs = null;
String board = null; String board = null;
if (info.hasData()) { if (info.hasData()) {
prefs = new PreferencesMap(); prefs = new PreferencesMap();
board = info.getPropertyString("board"); board = info.getPropertyString("board");
prefs.put("board", board); prefs.put("board", board);
prefs.put("distro_version", info.getPropertyString("distro_version")); prefs.put("distro_version", info.getPropertyString("distro_version"));
} }
String label = name + " at " + address; String label = name + " at " + address;
if (board != null) { if (board != null) {
String boardName = Base.getPlatform().resolveDeviceByBoardID(Base.packages, board); String boardName = Base.getPlatform().resolveDeviceByBoardID(Base.packages, board);
label += " (" + boardName + ")"; label += " (" + boardName + ")";
} }
BoardPort port = new BoardPort(); BoardPort port = new BoardPort();
port.setAddress(address); port.setAddress(address);
port.setBoardName(name); port.setBoardName(name);
port.setProtocol("network"); port.setProtocol("network");
port.setPrefs(prefs); port.setPrefs(prefs);
port.setLabel(label); port.setLabel(label);
synchronized (this) { synchronized (this) {
removeDuplicateBoards(port); removeDuplicateBoards(port);
ports.add(port); ports.add(port);
}
} }
} }