Java Socket 连接超时问题

lwh_1024 2011-10-22 04:22:46
如题

部分代码如下

socket = new Socket();
SocketAddress endpoint = new InetSocketAddress("32.12.21.97", 1609);
socket.connect(endpoint, 10000);


当IP不存在时,在设置的10秒超时事件过后会正常捕捉异常

当IP真实存在,而端口不通时,会很快捕捉到异常
请问为何设置的超时时间没用?
谢谢

补充:是建立连接的超时,不是接受数据的超时
...全文
551 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuzhenwangvip 2011-10-24
  • 打赏
  • 举报
回复
好东西、、、、、
lwh_1024 2011-10-24
  • 打赏
  • 举报
回复
再顶起来
lwh_1024 2011-10-23
  • 打赏
  • 举报
回复
顶起来。。。
lwh_1024 2011-10-23
  • 打赏
  • 举报
回复
我想只要是做过Socket的,都会明白Socket连接是针对端口的
如果仅仅是IP存在JAVA Socket就能建立连接了吗?
请问是建立和哪个端口的连接呢?
就像要入住一个酒店,只告诉你是哪个酒店,而房间没告诉你一样。

我感觉Java里面应该有针对端口的连接超时吧,请高手指教!
火光闪耀 2011-10-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pl3121605999 的回复:]

其实我觉得这个你设置这个超时,在ip错误的情况下能够相应。。是因为。你发出的数据包之后等待对方的相应如果10秒都没有相应。。那么就会停止。。所以我想他只针对的是ip。。而端口是错就是错对就是对。。不存在等待相应。。 = = 。这只是我想的。。没有考证。
[/Quote]

应该就是这样的了。
lwh_1024 2011-10-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pl3121605999 的回复:]

其实我觉得这个你设置这个超时,在ip错误的情况下能够相应。。是因为。你发出的数据包之后等待对方的相应如果10秒都没有相应。。那么就会停止。。所以我想他只针对的是ip。。而端口是错就是错对就是对。。不存在等待相应。。 = = 。这只是我想的。。没有考证。
[/Quote]

Socket通讯当然是应该针对端口的,没有端口,又怎能建立Socket呢?
所以说建立Socket超时也应该是针对端口才对吧,可是无效。。。。。。
pl3121605999 2011-10-22
  • 打赏
  • 举报
回复
其实我觉得这个你设置这个超时,在ip错误的情况下能够相应。。是因为。你发出的数据包之后等待对方的相应如果10秒都没有相应。。那么就会停止。。所以我想他只针对的是ip。。而端口是错就是错对就是对。。不存在等待相应。。 = = 。这只是我想的。。没有考证。
lwh_1024 2011-10-22
  • 打赏
  • 举报
回复
不是时间长短的问题,而是就没有生效,不知为何
安心逍遥 2011-10-22
  • 打赏
  • 举报
回复
十秒太长了吧,一般四秒足以。

一般发送四个数据包就可以了,也就是四秒
Paradise_heida 2011-10-22
  • 打赏
  • 举报
回复
连接时判断IP是否存在通常超时时间是比较长的,而确定IP真实存在以后,判断端口是否可用的超时时间很短。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧