Hello Simon,
Is your server being hosted in a virtual machine by any chance? I observe a similar issue when connecting to the UaExpert ANSI C demo server hosted on Microsoft Azure. The Unified Automation client application can connect just fine, but the Milo OpcUaClient's connect() method throws an UnresolvedAddressException. The reason is that the public IPv4 address (104.42.40.127 in my case) is not the same as the VM machine name (Point85 in my case). After getting the EndpointDescriptions back from the server and choosing the anonymous endpoint, the public IP address has been substituted with the machine name. This causes the UnresolvedAddressException.
Below is a short log:
2018-05-28 09:53:26.437 INFO UaOpcClient - Identity provider: AnonymousProvider
2018-05-28 09:53:32.152 INFO UaOpcClient - App name: Point85 OEE OPC UA Client, app URI: urn:point85:oee:client
java.util.concurrent.ExecutionException: java.nio.channels.UnresolvedAddressException
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1915)
at org.point85.domain.opc.ua.UaOpcClient.connect(UaOpcClient.java:232)
at org.point85.app.opc.ua.OpcUaController.connectToDataSource(OpcUaController.java:38)
at org.point85.app.designer.DataSourceConnectionController$ConnectionService$1.call(DataSourceConnectionController.java:147)
at org.point85.app.designer.DataSourceConnectionController$ConnectionService$1.call(DataSourceConnectionController.java:1)
at javafx.concurrent.Task$TaskCallable.call(Task.java:1423)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at javafx.concurrent.Service.lambda$null$493(Service.java:725)
at java.security.AccessController.doPrivileged(Native Method)
at javafx.concurrent.Service.lambda$executeTask$494(Service.java:724)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)