迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 错误 Java.Net.SocketTimeoutException: Connection Timed Out

作者:迹忆客 最近更新:2023/07/12 浏览次数:

在本篇文章中,我们将讨论 java.net.SocketTimeoutException: Connection timed out。 但首先,让我们仔细看看套接字和超时的概念。


Java 中的套接字

两个计算机应用程序之间的逻辑链接可能有多个端点,其中之一是套接字。

换句话说,它是应用程序用来通过网络传输和接收数据的逻辑接口。 IP 地址和端口号构成了最基本形式的套接字。

每个套接字都分配有一个唯一的端口号,用于标识服务。 基于连接的服务使用基于 TCP 的流套接字。

因此,Java 提供了 java.net.Socket 类作为客户端编程选项。

另一方面,java.net.ServerSocket 类用于服务器端 TCP/IP 编程。 基于 UDP 的数据报套接字是另一种套接字,它用于无连接服务。

Java 支持 java.net.DatagramSocket 进行 UDP 操作。


Java 中的超时

当调用套接字构造函数时,将创建套接字对象的实例,从而允许从客户端在客户端和服务器之间建立连接。

作为输入,构造函数期望接收远程主机的地址和端口号。 之后,它尝试使用提供的参数建立与远程主机的连接。

该操作将阻止其他进程继续进行,直到成功创建连接。 但是,如果在指定时间后连接未成功,应用程序将抛出以下错误。

java.net.SocketTimeoutException:Connection timed out

侦听传入的连接请求时,服务器端的 ServerSocket 类永久处于活动状态。 当ServerSocket收到连接请求时,调用accept函数创建一个新的socket对象。

与前一种方法类似,此方法会阻塞,直到远程客户端连接为止。


Java中java.net.SocketTimeoutException:Connection timed out的原因

以下是导致该错误的一些可能原因。

  1. 服务器运行良好。 然而,超时值设置得较短。 因此,请增加超时值。
  2. 在远程主机上,任何服务都没有侦听指定的端口。
  3. 没有发送到远程主机的路由。
  4. 远程主机似乎不允许任何连接。
  5. 到达远程主机时出现问题。
  6. 互联网连接速度慢或不可用。

Java中java.net.SocketTimeoutException: Connection timed out的解决办法

我们可以为客户端和服务器活动预先设置超时选项。 添加 try 和 catch 结构将是一个合适的解决方案。

  1. 在客户端,我们要做的第一件事是构造一个空套接字。 接下来,我们将使用 connect() 方法,然后配置超时参数,其中超时应大于 0 毫秒。

    如果在函数返回之前超时到期,则会抛出 SocketTimeoutException。

    Socket s = new Socket();
    SocketAddress sAdres = new InetSocketAddress(host, port);
    s.connect(sAdres, 50000);
    
  2. 如果要从服务器端设置超时值,可以使用 setSoTimeout() 函数。 timeout 参数的值决定了 ServerSocket.accept() 函数将阻塞的时间长度。
    ServerSocket servers = new new ServerSocket(port);
    servers.setSoTimeout(10000);
    
    同样,超时时间应大于 0 毫秒。 如果在方法返回之前超时到期,该方法将生成 SocketTimeoutException。
  3. 确定连接超时,然后使用 try-catch 块处理它是处理 HttpException 的另一种出色技术。
    HttpUrlConnection conn = (HttpURLConnection) url.openConnection();
    conn.setConnectTimeout(8000);
    

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

修复 Java 中错误 Error: Else Without if

发布时间:2023/07/13 浏览次数:183 分类:Java

本篇文章我们将了解在用 Java 编写代码时只说 'else' without 'if' 的错误。 我们还将找出导致此错误的可能原因并找到解决方案。Java 中 error: 'else' without 'if'

Java 中的无效字符常量

发布时间:2023/07/13 浏览次数:152 分类:Java

本 Java 文章将讨论无效字符常量。 但在此之前,我们需要了解字符常量。Java字符常量 单字符常量,也称为字符常量,是封装在一对 '' 或单引号中的单个字符。

解决 Java 中 Missing Method Body or Declare Abstract

发布时间:2023/07/13 浏览次数:68 分类:Java

本篇文章讨论编译时错误、missing method body, or declare abstract。 在这里,我们将经历三个不同的步骤。首先,我们将了解一个Java程序来了解错误。 其次,突出显示此错误的可能原因,并最终找到

在 Java 中使用 Scanner 时没有此类元素异常

发布时间:2023/07/13 浏览次数:72 分类:Java

本篇文章将介绍如何在 Java 中使用 Scanner 时解决 NoSuchElementException 错误。在 Java 中使用 Scanner 时没有此类元素异常 Scanner 类用于在 Java 程序中获取用户输入。 它使用多种实用方法,如 next()、

修复 Java.Net.SocketException: Connection Reset 错误

发布时间:2023/07/13 浏览次数:191 分类:Java

今天的文章将讨论Java中可能出现的 java.net.SocketException: Connection Reset 错误的原因和解决方案。 最后,我们将看到如何消除 Java 的 java.net.SocketException:Connection Reset错误。

解决 Java 中 Generic Array Creation 错误

发布时间:2023/07/12 浏览次数:189 分类:Java

本篇文章通过代码示例说明了 generic array creation 错误,并重点介绍了创建通用数组时出现此错误的原因。 本次讨论将得出解决方案,我们将学习如何使用对象数组和反射功能创建通用数组。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便