setSoTimeOut() 可以设置多次你那个 bufIn 是怎么来的?

解决方案 »

  1.   

    每次的time out时间可以不同,是你最近的一次设置setSoTimeOut()。
    你认为setSoTimeOut()好像没有用,那你是怎么测试的?我在前面见过有人认为time out是连接不上后过多久才返回的时间。实际上如果联接不上,是立即返回错误的。time out是连接上并且传输了request,等待server端处理,但是server在time out时间内不能处理完,程序就返回错误。你可以在server段用Thread.sleep()来延时,就可以看到time out效果
      

  2.   

    谢谢楼上的两位,
    我用的是标准的FTP服务器,
    比较难测,
    我的方法是把setSoTimeOut()里的值设得比较小,
    如一毫秒,
    可是好像并没有抛出异常,
    难道连接Internet上的FTP服务器,
    延迟会小于一毫秒?
    我的bufIn是这样来的:
    control = new Socket(addr, port);
    j_bufIn = new BufferedReader(new InputStreamReader(control.getInputStream()));
    请有经验的兄弟帮忙看看,再现等待。
      

  3.   

    setSoTimeout是设置连接之后的响应时间的,可以多次设置
      

  4.   

    1毫秒,你觉得能连上FTP server吗??
      

  5.   

    setSoTimeout(int timeout);
    Enable/disable SO_TIMEOUT with the specified timeout, in milliseconds. 
    你设定的超时是0.1秒,能连上吗?
      

  6.   

    帮你顶一下,看看DOC api的文档我觉得就可以解决这个问题了
      

  7.   

    setSoTimeout 是在 bufIn.readLine() 执行之后开始计时的
    如果没有抛出任何异常 那么基本上 bufIn.readLine() 是读到东西了1 毫秒 好像是少了一点
    你的 FTP服务器 是 loacl 的?
      

  8.   

    我也遇到这样的问题,如果在等待读的时候对方socket断了怎么办,不能让读的线程一直等待,用下的方法可行吗?
    try {
       socket.setSoTimeout(100);
       line = bufIn.readLine();
    }catch(){...}如果可行,具体的超时数值该怎么设置?