Java网络编程点滴

Java网络编程点滴
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不是非阻塞模式
}

你可能感兴趣的:(Java网络编程点滴)