ForeveroLo 2012-03-20 18:25 采纳率: 0%
浏览 628
已采纳

ServerSocket返回数据给客户端数据的超时问题

场景:多线程环境下,客户端通过Socket发送请求给ServerSocket,现在ServerSocket需要去取数据并返回给Socket。取数据的过程时间是不定的,现在要求设置一个超时时间,如果ServerSocket取数据的时间超过一个定值就通知客户端超时并关闭socket。
问题:请问如何设置这个超时时间。

注意:Socket和ServerSocket已经建立了连接。

我想通过一个定时器来实现,不知道可不可以;是否还有什么更好的办法?
求解!!!

  • 写回答

3条回答 默认 最新

  • ll89308839 2012-03-21 08:27
    关注

    [code="java"]
    public class MyServerSocket extends Thread
    {
    public MyServerSocket(ServerSocket serverSocket,long timeout){
    this.serverSocket=serverSocket;
    this.timeout=timeout;
    }
    private ServerSocket serverSocket;
    private Socket socket;
    private Thread thread ;

    private long timeout=1000000;
    
    public Socket accept() throws Exception{
       this.start();
        thread =   new Thread() {
                public void run() {
                        acc();
                  }
         };
         thread.start();
         while(thread.isAlive()){
             if(!this.isAlive()){
                 //这里想让它停止取数好像有点不容易,直接stop进程有点不靠谱
                 thread.stop();
                 throw new Exception("accpet time out");
             }
         }
       return socket;
    }
    private void acc() 
    {
        try {
            socket=serverSocket.accept();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void run()
    {
        while(timeout>0){
            try {
                sleep(1000);
                timeout-=1000;
            } catch (InterruptedException e)  {
                e.printStackTrace();
            }
        }
    }
    

    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 关于多次提交POST数据后,无法获取到POST数据参数的问题
  • ¥15 win10,这种情况怎么办
  • ¥15 如何在配置使用Prettier的VSCode中通过Better Align插件来对齐等式?(相关搜索:格式化)
  • ¥100 在连接内网VPN时,如何同时保持互联网连接
  • ¥15 MATLAB中使用parfor,矩阵Removal的有效索引在parfor循环中受限制
  • ¥20 Win 10 LTSC 1809版本如何无损提升到20H1版本
  • ¥50 win10 LTSC 虚拟键盘不弹出
  • ¥30 微信小程序请求失败,网页能正常带锁访问
  • ¥15 Matlab求解微分方程,如何用fish2d进行预优?
  • ¥50 CrossLink-LIF-MD6000 型 FPGA 的 CMOS 转 MIPI D-PHY IP 核功能使用异常