某人想在h小时内钓到_为某人命名以重新连接到您的服务器
某人想在h小時(shí)內(nèi)釣到
在進(jìn)行測試自動化時(shí),通常需要知道當(dāng)前計(jì)算機(jī)的名稱,以提示另一臺計(jì)算機(jī)連接到它,特別是在并行運(yùn)行測試的情況下。 本周,我試圖對服務(wù)器進(jìn)行測試,以使其連接回在從屬測試計(jì)算機(jī)上運(yùn)行的WireMock服務(wù)器。
堆棧溢出的標(biāo)準(zhǔn)響應(yīng)是使用以下模式獲取網(wǎng)絡(luò)地址。 在我的版本中,如果我們無法解析名稱,則假設(shè)我們正在VPN上的開發(fā)人員便攜式計(jì)算機(jī)上運(yùn)行,??因此所有測試都在同一臺計(jì)算機(jī)上運(yùn)行。 (因此localhost)
String hostName = "localhost"; try {InetAddress addr = InetAddress.getLocalHost();String suggestedName = addr.getCanonicalHostName();// Rough test for IP address, if IP address assume a local lookup// on VPNif (!suggestedName.matches("(\\d{1,3}\\.?){4}") && !suggestedName.contains(":")) {hostName = suggestedName;} } catch (UnknownHostException ex) { }System.out.println(hostName);問題來了,我們必須信任本地計(jì)算機(jī)設(shè)置,例如/ etc / hostname,這可能導(dǎo)致無法從另一臺計(jì)算機(jī)訪問的網(wǎng)絡(luò)名稱。 為了解決這個(gè)問題,我編寫了以下代碼,以在可用的網(wǎng)絡(luò)接口上工作,以找到可用于與本機(jī)對話的可遠(yuǎn)程尋址的網(wǎng)絡(luò)地址名稱。 (我可以使用IP地址,但是很難記住它們,尤其是當(dāng)我們向IPv6邁進(jìn)時(shí))
String hostName = stream(wrap(NetworkInterface::getNetworkInterfaces).get())// Only alllow interfaces that are functioning.filter(wrap(NetworkInterface::isUp))// Flat map to any bound addresses.flatMap(n -> stream(n.getInetAddresses()))// Fiter out any local addresses.filter(ia -> !ia.isAnyLocalAddress() && !ia.isLinkLocalAddress() && !ia.isLoopbackAddress())// Map to a name.map(InetAddress::getCanonicalHostName)// Ignore if we just got an IP back.filter(suggestedName -> !suggestedName.matches("(\\d{1,3}\\.?){4}")&& !suggestedName.contains(":")).findFirst()// In my case default to localhost.orElse("localhost");System.out.println(hostName);您可能會注意到那里使用了一些支持方法來整理代碼,如果您感興趣的話,這里是必需的支持方法。
@FunctionalInterface public interface ThrowingPredicate<T, E extends Exception>{boolean test(T t) throws E; }@FunctionalInterface public interface ThrowingSupplier<T, E extends Exception>{T get() throws E; }public static <T, E extends Exception> Predicate<T> wrap(ThrowingPredicate<T, E> th) {return t -> {try {return th.test(t);} catch (Exception ex) {throw new RuntimeException(ex);}}; }public static <T, E extends Exception> Supplier<T> wrap(ThrowingSupplier<T, E> th) {return () -> {try {return th.get();} catch (Exception ex) {throw new RuntimeException(ex);}}; }// http://stackoverflow.com/a/23276455 public static <T> Stream<T> stream(Enumeration<T> e) {return StreamSupport.stream(Spliterators.spliteratorUnknownSize(new Iterator<T>() {public T next() {return e.nextElement();}public boolean hasNext() {return e.hasMoreElements();}},Spliterator.ORDERED), false); }翻譯自: https://www.javacodegeeks.com/2016/06/getting-name-someone-connect-back-server.html
某人想在h小時(shí)內(nèi)釣到
總結(jié)
以上是生活随笔為你收集整理的某人想在h小时内钓到_为某人命名以重新连接到您的服务器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux温度命令(linux温度)
- 下一篇: kafka netty_惠而浦:使用Ne