Java 错误 Java.Net.SocketTimeoutException: Connection Timed Out
在本篇文章中,我们将讨论 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的原因
以下是导致该错误的一些可能原因。
- 服务器运行良好。 然而,超时值设置得较短。 因此,请增加超时值。
- 在远程主机上,任何服务都没有侦听指定的端口。
- 没有发送到远程主机的路由。
- 远程主机似乎不允许任何连接。
- 到达远程主机时出现问题。
- 互联网连接速度慢或不可用。
Java中java.net.SocketTimeoutException: Connection timed out的解决办法
我们可以为客户端和服务器活动预先设置超时选项。 添加 try 和 catch 结构将是一个合适的解决方案。
-
在客户端,我们要做的第一件事是构造一个空套接字。 接下来,我们将使用 connect() 方法,然后配置超时参数,其中超时应大于 0 毫秒。
如果在函数返回之前超时到期,则会抛出 SocketTimeoutException。
Socket s = new Socket(); SocketAddress sAdres = new InetSocketAddress(host, port); s.connect(sAdres, 50000);
-
如果要从服务器端设置超时值,可以使用
setSoTimeout()
函数。 timeout 参数的值决定了ServerSocket.accept()
函数将阻塞的时间长度。ServerSocket servers = new new ServerSocket(port); servers.setSoTimeout(10000);
-
确定连接超时,然后使用 try-catch 块处理它是处理 HttpException 的另一种出色技术。
HttpUrlConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(8000);
相关文章
修复 Java 中错误 Error: Else Without if
发布时间:2023/07/13 浏览次数:183 分类:Java
-
本篇文章我们将了解在用 Java 编写代码时只说 'else' without 'if' 的错误。 我们还将找出导致此错误的可能原因并找到解决方案。Java 中 error: 'else' without 'if'
Java 中 The System Cannot Find the File Specified
发布时间:2023/07/13 浏览次数:99 分类:Java
-
本篇文章介绍如何解决 Java 中的 The system cannot find the file specified 错误。修复Java中 The system cannot find the file specified 错误
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 错误 Javac Is Not Recognized as an Internal or External Command, Operable
发布时间:2023/07/13 浏览次数:108 分类:Java
-
本文介绍了 Java 的 'javac' is not recognized as an internal or external command, operable program or batch file 的可能原因以及该错误的可能解决方案。 首先,我们来看看 javac 是什么。Java 中的 Javac
修复 Java.Net.SocketException: Connection Reset 错误
发布时间:2023/07/13 浏览次数:191 分类:Java
-
今天的文章将讨论Java中可能出现的 java.net.SocketException: Connection Reset 错误的原因和解决方案。 最后,我们将看到如何消除 Java 的 java.net.SocketException:Connection Reset错误。
解决 Java.Lang.RuntimeException: Unable to Instantiate Activity ComponentInfo
发布时间:2023/07/12 浏览次数:191 分类:Java
-
我们将探讨导致 java.lang.RuntimeException: Unable to instantiate Activity ComponentInfo 的不同可能原因。 最后,我们将有一个解决方案来根除它。解决 java.lang.RuntimeException: Unable to instantiate Activity ComponentIn
解决 Java 中 Generic Array Creation 错误
发布时间:2023/07/12 浏览次数:189 分类:Java
-
本篇文章通过代码示例说明了 generic array creation 错误,并重点介绍了创建通用数组时出现此错误的原因。 本次讨论将得出解决方案,我们将学习如何使用对象数组和反射功能创建通用数组。