我无法找到适当的答案,以确定以下错误的含义:
java.net.SocketException: Software caused connection abort: recv failed
笔记:
相关代码:
BufferedReader reader;
try {
URL url = new URL(URI);
reader = new BufferedReader(new InputStreamReader(url.openStream())));
} catch( MalformedURLException e ) {
throw new IOException("Expecting a well-formed URL: " + e);
}//end try: Have a stream
String buffer;
StringBuilder result = new StringBuilder();
while( null != (buffer = reader.readLine()) ) {
result.append(buffer);
}//end while: Got the contents.
reader.close();
Run Code Online (Sandbox Code Playgroud) 我想boolean isReachable(String host, int port)在下面的条件下通过以下JUnit测试的最快和最准确的函数.超时值由JUnit测试本身指定,可能被视为"无法访问".
请注意:所有答案必须与平台无关.这意味着它InetAddress.isReachable(int timeout)无法工作,因为它依赖端口7在Windows 上执行ping操作(ICMP ping是Windows上未记录的功能),并且此端口在此设置中被阻止.
局域网设置:
thisMachine(192.168.0.100)otherMachine(192.168.0.200)noMachine或有IP 192.168.0.222(总是无法到达)8080; 所有其他端口都无法访问(包括端口7)example.com(208.77.188.166)正在端口上运行Web服务器,80只有在LAN连接到Internet时才可以访问有时,局域网与Internet断开连接,在这种情况下,只能通过IP地址调用本地计算机(所有其他计算机都无法访问;没有DNS).
所有测试都在运行thisMachine.
@Test(timeout=1600) // ~320ms per call (should be possible to do better)
public void testLocalhost() {
// We can always reach ourselves.
assertTrue(isReachable("localhost", 8080));
assertTrue(isReachable("127.0.0.1", 8080));
assertTrue(isReachable("thisMachine", 8080)); // Even if there's no …Run Code Online (Sandbox Code Playgroud)