当前位置: 首页 > news >正文

问题解决:java.net.SocketTimeoutException: Read timed out

简单了解Sockets

Sockets:两个计算机应用程序之间逻辑链接的一个端点是应用程序用来通过网络发送和接收数据的逻辑接口

  1. IP地址和端口号的组合
  2. 每个Socket都被分配了一个用于标识服务的特定端口号
  3. 基于连接的服务使用基于tcp的流Sockets
    • Java为客户端编程提供了java.net.Socket类
    • 相反,服务器端TCP/IP编程使用java.net.ServerSocket类
    • 另一种类型的Socket是基于udp的数据报Sockets,用于无连接的服务。Java为UDP操作提供了java.net.DatagramSocket

什么是“Connection Timed Out”

为了从客户端建立到服务器的连接,调用Socket构造函数,它实例化一个Socket对象

构造函数将远程主机地址和端口号作为输入参数。之后,它尝试根据给定的参数建立到远程主机的连接该操作将阻塞所有其他进程,直到成功建立连接

  • 然而,如果连接在一段时间后没有成功,程序会抛出一个ConnectionException,并带有" connection timed out "消息:
    java.net.ConnectException: Connection timed out: connect
    

在服务器端,ServerSocket类持续侦听传入的连接请求。当ServerSocket接收到连接请求时,它调用accept()方法来实例化一个新的Socket对象。类似地,此方法也会阻塞,直到与远程客户机成功建立连接。

  • 如果TCP握手没有完成,则连接仍然不成功。结果,程序抛出IOException,指示在建立新连接时发生错误

发生“ Read timed out”的原因

没有服务正在侦听远程主机上的给定端口

远程主机不接受任何连接

远程主机不可用

网速慢

没有到远端主机的转发路径

有时,防火墙出于安全原因会阻塞某些端口。因此,当客户端试图建立到服务器的连接时,可能会出现“连接超时”错误。因此,在将端口绑定到服务之前,我们应该检查防火墙设置,看看它是否阻塞了端口。

解决方法

对于TCP客户端和服务器端,我们可以使用setSoTimeout(int timeout)方法指定socketInputStream.read()方法阻塞的时间量:

Socket socket = new Socket(host, port);
socket.setSoTimeout(30000);

但是,如果在方法返回之前超时,程序将抛出SocketTimeoutException。

http://www.lryc.cn/news/24824.html

相关文章:

  • 前端代码优化方法
  • 【批处理脚本】-1.16-文件内字符串查找增强命令findstr
  • 三天吃透Redis面试八股文
  • 数据湖架构Hudi(三)Hudi核心概念
  • 在数字优先的世界中打击知识产权盗窃
  • 机器学习算法原理——逻辑斯谛回归
  • 【华为OD机试 】最优资源分配/芯片资源占用(C++ Java JavaScript Python)
  • 600 条最强 Linux 命令总结
  • python自学之《21天学通Python》(15)——第18章 数据结构基础
  • 从功能到自动化,熬夜3天整理出这一份2000字学习指南~
  • 客户端攻击(溯源攻击,获取客户端信息)
  • visual studio 2022 社区版 c# 环境搭建及安装使用【图文解析-小白版】
  • 21- 神经网络模型_超参数搜索 (TensorFlow系列) (深度学习)
  • 《NFL橄榄球》:芝加哥熊·橄榄1号位
  • 【ES】Elasticsearch核心基础概念:文档与索引
  • 实时手势识别(C++与python都可实现)
  • 15个Spring扩展点,一般人知道的不超过5个!
  • Elasticsearch:以 “Painless” 方式保护你的映射
  • js几种对象创建方式
  • 阿里云服务器ECS适用于哪些应用场景?
  • Ajax学习笔记01
  • Jinja2----------过滤器的使用、控制语句
  • 面试了1个自动化测试,开口40W年薪,只能说痴人做梦...
  • 冲鸭!33% 程序员月薪达到 5 万元以上~
  • 【RSA】HTTPS中SSL/TLS握手时RSA前后端加密流程
  • clion在linux设置桌面启动图标(jetbrains全家桶均适用)
  • Java数据结构LinkedList单链表和双链表模拟实现及相关OJ题秒AC总结知识点
  • 立创EDA 学习 day01 应用下载安装,基本使用的操作
  • 华为OD机试真题Python实现【火星文计算】真题+解题思路+代码(20222023)
  • yolov8 修改类别 自定义数据集