(胜博发娱乐手机客户端下载) java.net.sockettimeoutexception: read timed out的问题
胜博发娱乐手机版
胜博发娱乐手机版
当前位置 : 胜博发娱乐手机版 > 胜博发娱乐手机客户端下载

(胜博发娱乐手机客户端下载) java.net.sockettimeoutexception: read timed out的问题

client有如下伪代码:

try{
    Socket ss = new Socket;
    ss.connectnew InetSocketAddress127.0.0.1, TCPServer.LISTEN_PORT, 4000;
    ss.setSoTimeout5000;
    
    //dosomthing
    InputStream is = ss.getInputStrean;
    log.info"read start time:" + System.currentTimeMillis
    int r = is.read....;
    log.info"read start time:" + System.currentTimeMillis
} catchException e{
    log.info"throw exception time:" + System.currentTimeMillis;
}

上面这样的逻辑,ss.setSoTimeout5000;把读超时设置为5000ms,可经过测试read的时间也不过才619ms 就抛出了如题的异常?

这是服务端是同步通知,时间过长,把服务端修改成异步的即可

这个timeout,并不是触发的你setSoTimeOut5000的异常。我的理解是soTimeOut是整个Socket建立连接的最长超时时间,如果你之前connect 没有TimeOut,Read 没有TimeOut,Write 也没有TimeOut,但是你的socket仍然没有得到关闭,当时间超过SoTimeOut的时候,就会抛出异常。

广告位

胜博发娱乐手机版