免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3085 | 回复: 7
打印 上一主题 下一主题

google 了一晚上也没能解决的java中的socket问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-12 20:44 |只看该作者 |倒序浏览
一个java编写的client端程序,如何知道socket连接已经关闭,这里有一个很重要的前提就是这个client程序不允许调用读或者写这样的方法来激发socket的异常!!!

不要告诉我用 isConnected  isClosed  getKeepAlive  getHosName(是不是这么写的忘了,反正就是获得server端地址之类的方法),这些方法都是狗屎,我看了一下他们的实现,也实际试验了一下,都是假值!!!

我觉得这种应用非常常见,不是所有的程序都会被允许读或者写socket通道的,比如一个监控线程,他的功能定位就是及时发现socket连接是否中断,如果中断及时重建,而不能干扰正常的程序去读或者写这个socket通道!!!

我这个问题,我自己抽象成为:“当Server端主动关闭或者被强行kill掉时,Client端的程序除了调用读或者写这样的方法以外,还有没有别的方法可以激发出socket异常,以便最终可以被程序扑获并判断出socket已经关闭????”

我找了一晚上,没搞定,希望各位帮忙想想,至少在C程序里我是可以通过select函数实现的,没有理由java这个东东实现不了,,,太不可思议了!!!是不是需要使用某些特别的类了呢??

论坛徽章:
0
2 [报告]
发表于 2007-06-13 10:36 |只看该作者
在某些情况下,操作系统的TCP/IP栈都不知道对方已经出了问题
这些情况包括中间路由中断,对方机器断电/死机等等
可以使用SO_KEEPALIVE,不过两个小时太长了

论坛徽章:
0
3 [报告]
发表于 2007-06-14 11:38 |只看该作者
java 也有 select ,看看 nio那一块儿

论坛徽章:
0
4 [报告]
发表于 2007-06-14 13:02 |只看该作者
不允许调用读或者写这样的方法来激发socket的异常!!!

这样的话,还真是没啥好办法,至少我不知道。
楼下的有知道的,指点一下

论坛徽章:
0
5 [报告]
发表于 2007-06-14 13:46 |只看该作者
你可以上www.ojava.net看看。。。

-------------------------------------
上海咨路教育中心
3G移动开发精品示范班
www.zilu.org

论坛徽章:
0
6 [报告]
发表于 2007-06-18 13:19 |只看该作者
如果是长时间空闲,那要保持连接干嘛?还不如每次干完就关闭连接,需要时重新连接。

论坛徽章:
0
7 [报告]
发表于 2007-07-08 09:24 |只看该作者
从你说话的样子和事情来看,还有态度,一个字, “很差”。别的词语不好意思说出口。
api/java/nio/channels/SelectionKey.html#OP_READ
OP_READ

public static final int OP_READ

    Operation-set bit for read operations.

    Suppose that a selection key's interest set contains OP_READ at the start of a selection operation. If the selector detects that the corresponding channel is ready for reading, has reached end-of-stream, has been remotely shut down for further reading, or has an error pending, then it will add OP_READ to the key's ready-operation set and add the key to its selected-key set.
同样,OP_WRITE也有同样的条件说明。
好好看看吧。心高气傲,可以,心浮气躁,否矣。

论坛徽章:
0
8 [报告]
发表于 2007-07-08 21:28 |只看该作者
  support level 7
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP