迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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 中延迟几秒钟的时间

发布时间: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 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便