栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

java关闭网络连接超时

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java关闭网络连接超时

这意味着司机试图打开该端口连接到IP,但有没有

监听一个端口上,所以没有人回答“连接超时”消息。

由于Arunn P约翰尼拉建议,如果你打开一个命令行,并运行

telnet localhost 4545

而且这样

Trying 127.0.0.1...

telnet: Unable to connect to remote host: Connection refused

响应,这意味着没有人听。例如。尝试在该端口上打开套接字(数据库连接)将导致连接超时异常。 (选择4545端口是因为我的电脑上没有任何东西在听)

如果它响应其他任何东西,例如

telnet localhost 3306

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

这意味着该端口是开放的,并且该异常不会被抛出。 (我的电脑上有3306的MySQL正在监听)。

很可能您的数据库中的IP和端口号为

connection string(请参阅

reference)是错误的,例如,设置为某个没有数据库正在侦听的端口。

编辑:

我最初给了一个错误的答案(如EJP指出)。这两个错误在TCP层发生,同时建立连接:

Connection refused意味着存在意味着连接不能建立,或由EJP该连接的声明没有人听的给定端口

Connection timeout上尝试超时。

假设你在Java中,以下行,最终JDBC驱动程序(像),这在某些时候:之前该行执行(TCP)连接

Socket s = new Socket(IP,PORT);

是关闭。 此行得到执行,并且没有发生异常,连接是建立(如在apidoc for constructor中所述)。 虽然该行执行,这是实际发生的事情(它被称为TCP三次握手):

让我们回顾一下两种可能的情况。首先,我们假设IP是可访问的(例如ping IP从命令行开始向控制台打印响应时间),但没有进程正在侦听PORT。三次握手将按照绘制的方式发生,但一旦连接获得建立服务器将不会找到任何侦听该端口的进程,并将立即关闭连接立即 - Connection refused将被抛出。

这是此例外的唯一可能结果。

现在,让我们假设IP不可达。客户端将发送连接请求但绝不会收到连接授予。经过一段时间(超时时间)已经通过Connection timeout将被抛出。请看下面的代码: String reachableIP = "127.0.0.1";

String unreachableIP = "10.192.0.1";

int connTimeout = 1000;

long duration = 0;

try {

duration = System.currentTimeMillis();

new Socket().connect(new InetSocketAddress(unreachableIP, 3306), connTimeout);

}

catch (Exception e) {

duration = System.currentTimeMillis() - duration;

System.out.println("connect attempt duration measured in ms:" + duration);

System.out.println(e.getMessage());

}

输出: connect attempt duration measured in ms:1009

connect timed out

这在apidoc for connect method还指出。因此,如果目标IP不可访问,则会抛出此异常。然而,网络上的计算机的不可达性的原因可能很多。我想到的第一件事情是主机已关闭,或者重新考虑EJP的评论:

有很多原因,例如积压队列填满或网络连接问题可能导致此异常。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906320.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号