linux下如何判断server关闭后socket不可用?

假设在linux上通过杀进程的方式停止socketserver的运行,那么在杀进程前已经建立的socket连接如何判断其已经失效了?
此时判断isClosed为false,isBound和isConnected都是true,而且通过sendUrgentData的方式验证,在windows系统下会抛出异常,可以断定失效,但是在linux下无异常,没办法判断连接失效?想知道在linux下如何判读啊?
测试代码:
Socket socket = new Socket("172.16.132.189", 5656);
socket.setSoTimeout(3000);

    LOG.info("--wait--");
    LOG.info("--do--");
    LOG.info("--isClosed--"+socket.isClosed());
    LOG.info("--isBound--"+socket.isBound());
    LOG.info("--isConnected--"+socket.isConnected());

    socket.sendUrgentData(0xff);
    socket.close();
    LOG.info("--over--");

在执行到LOG.info("--wait--")的时候通过杀进程的方式将sockerserver关闭

[quote]8. SO_OOBINLINE

  public boolean getOOBInline() throws SocketException
  public void setOOBInline(boolean on) throws SocketException
  如果这个Socket选项打开,可以通过Socket类的sendUrgentData方法向服务器发送一个单字节的数据[/quote]
你linux服务器SO_OOBINLINE是打开还是关闭的???

研究得这么深入,对于[quote]此时判断isClosed为false,isBound和isConnected都是true,[/quote]我其实感觉很意外。

试试看getOutputStream()
和getInputStream()会不会抛出异常

Linux操作系统上强行关闭一个服务时,操作系统会发送RST报文给客户端, Java读取数据时,会报连接断开的异常。 你可以尝试在这个链接上read, Java会抛出异常,告诉你链接中断了。