小编gra*_*r31的帖子

java.net.SocketException:软件导致连接中止:recv失败

我无法找到适当的答案,以确定以下错误的含义:

java.net.SocketException: Software caused connection abort: recv failed

笔记:

  • 这个错误不常见且不可预测; 虽然获取此错误意味着将来所有URI请求也将失败.
  • 有效的唯一解决方案(也是偶尔)是重启Tomcat和/或实际机器(在本例中为Windows).
  • URI绝对可用(通过要求浏览器进行提取来确认).

相关代码:

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)

java sockets

75
推荐指数
3
解决办法
27万
查看次数

在Java中检测无法访问的主机的最快方法是什么?

我想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(总是无法到达)
  • 两台机器都在端口上运行Apache Tomcat 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)

java sockets networking

11
推荐指数
2
解决办法
8652
查看次数

标签 统计

java ×2

sockets ×2

networking ×1