java怎么检测socket连接中断异常

baobaowoaini 2004-08-03 11:27:37
客户端用java语言和服务器(c语言的)建立了TCP连接,用bufferredreader和printwriter作为输入和输出,把服务器用ctrl+c关掉,客户端如何知道该连接断掉,
注:不要用bufferredreader的读方法,还有别的方法吗?
isCloseed和isconnect都监测不出来,printwriter的println也没有异常,
我估计没有别的了,大家给点意见?getOutputStream也不报异常
...全文
936 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kazy0514 2005-01-27
  • 打赏
  • 举报
回复
Socket clientSocket = new Socket(host,port);
InputStream is = clientSocket.getInputStream();
byte[] buf = new byte[len];
......//这里做循环守候,省略
is.read(buf);

将上面的这断程序在用try捕捉错误信息,当server端主动断开链接的时候会抛出异常吗??为什么我的不会抛出异常呢??在网上看到有人说只能用write来写捕捉异常来实现判断,究竟怎么样才是切实可行的,下午的时候碰到一个奇怪的问题,就是server端断开后我write一个buffer竟然还可以发送并且没有抛出异常,一定要等到write第二个buffer的时候才抛出异常broken pipe的异常,究竟怎么回事,我快疯了,哪位能救救我!!!
petercheng456 2005-01-27
  • 打赏
  • 举报
回复
我通常是将read封装到一个方法中,需要取串的时候调用这个方法。
无限循环一直读到不是null就返回一个串值,形如:

private String read() {
String tempString = null;
try {
while((tempString = /*string from some stream*/) == null) {
;
}
} catch (SomeException e) {
/* Report Exception */
}
return tempString;
}

这样因为是无限循环不断判断连接状态,所以只要一断开立刻就能知道
当然,开销比较大一点,不过应该可以接受的
kazy0514 2005-01-27
  • 打赏
  • 举报
回复
我也碰到这个问题,有人能解释一下java(不通过write方式)怎么判断连接中断的吗?楼主能否贴一下用bufferredreader方式检测的代码??

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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