posts - 12,  comments - 2,  trackbacks - 0
1、判断socket远端是否已经关闭
try{
      socket.sendUrgentData(
0xFF);//它会往输出流发送一个字节的数据,只要对方Socket的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节,而SO_OOBINLINE属性默认情况下就是关闭的
}
catch(Exception ex){
      reconnect();
}

2、上面的方法是参考网上的实现,自己又查看了一下java API才知道这根本有悖于socket程序设计的初衷。良好的实现应该是这样的:
try {
    
while (true{
        socket.receive(dataPacket);
        
//
    }

}
 catch (SocketTimeoutException e) {
    
//处理超时
}
 catch (PortUnreachableException e) {
    
//处理连接中断
}
 catch (IOException e) {
    
//IO异常
}
 catch (IllegalBlockingModeException e) {
    
//socket关联了channel,但是该channel不是非阻塞模式
}
posted on 2008-12-02 22:33 远帆 阅读(228) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: