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 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,