Plumb port numbers from mDNS discovery

This commit is contained in:
Cameron Gutman 2022-11-06 14:41:02 -06:00
parent 5b73317e30
commit ea003483c4
2 changed files with 10 additions and 4 deletions

View File

@ -6,12 +6,14 @@ import java.net.InetAddress;
public class MdnsComputer { public class MdnsComputer {
private InetAddress localAddr; private InetAddress localAddr;
private Inet6Address v6Addr; private Inet6Address v6Addr;
private int port;
private String name; private String name;
public MdnsComputer(String name, InetAddress localAddress, Inet6Address v6Addr) { public MdnsComputer(String name, InetAddress localAddress, Inet6Address v6Addr, int port) {
this.name = name; this.name = name;
this.localAddr = localAddress; this.localAddr = localAddress;
this.v6Addr = v6Addr; this.v6Addr = v6Addr;
this.port = port;
} }
public String getName() { public String getName() {
@ -26,6 +28,10 @@ public class MdnsComputer {
return v6Addr; return v6Addr;
} }
public int getPort() {
return port;
}
@Override @Override
public int hashCode() { public int hashCode() {
return name.hashCode(); return name.hashCode();
@ -36,7 +42,7 @@ public class MdnsComputer {
if (o instanceof MdnsComputer) { if (o instanceof MdnsComputer) {
MdnsComputer other = (MdnsComputer)o; MdnsComputer other = (MdnsComputer)o;
if (!other.name.equals(name)) { if (!other.name.equals(name) || other.port != port) {
return false; return false;
} }

View File

@ -260,7 +260,7 @@ public class MdnsDiscoveryAgent implements ServiceListener {
// Add a computer object for each IPv4 address reported by the PC // Add a computer object for each IPv4 address reported by the PC
for (Inet4Address v4Addr : v4Addrs) { for (Inet4Address v4Addr : v4Addrs) {
synchronized (computers) { synchronized (computers) {
MdnsComputer computer = new MdnsComputer(info.getName(), v4Addr, v6GlobalAddr); MdnsComputer computer = new MdnsComputer(info.getName(), v4Addr, v6GlobalAddr, info.getPort());
if (computers.put(computer.getLocalAddress(), computer) == null) { if (computers.put(computer.getLocalAddress(), computer) == null) {
// This was a new entry // This was a new entry
listener.notifyComputerAdded(computer); listener.notifyComputerAdded(computer);
@ -273,7 +273,7 @@ public class MdnsDiscoveryAgent implements ServiceListener {
Inet6Address v6LocalAddr = getLocalAddress(v6Addrs); Inet6Address v6LocalAddr = getLocalAddress(v6Addrs);
if (v6LocalAddr != null || v6GlobalAddr != null) { if (v6LocalAddr != null || v6GlobalAddr != null) {
MdnsComputer computer = new MdnsComputer(info.getName(), v6LocalAddr, v6GlobalAddr); MdnsComputer computer = new MdnsComputer(info.getName(), v6LocalAddr, v6GlobalAddr, info.getPort());
if (computers.put(v6LocalAddr != null ? if (computers.put(v6LocalAddr != null ?
computer.getLocalAddress() : computer.getIpv6Address(), computer) == null) { computer.getLocalAddress() : computer.getIpv6Address(), computer) == null) {
// This was a new entry // This was a new entry