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条)

报告相同问题?

悬赏问题

  • ¥15 Attributeerror:super object has no attribute '__sklearn_tags__'_'
  • ¥15 逆置单链表输出不完整
  • ¥15 宇视vms-B200-A16@R启动不了,如下图所示,在软件工具搜不到,如何解决?(操作系统-linux)
  • ¥500 寻找一名电子工程师完成pcb主板设计(拒绝AI生成式答案)
  • ¥15 关于#mysql#的问题:UNION ALL(相关搜索:sql语句)
  • ¥15 matlab二位可视化能否针对不同数值范围分开分级?
  • ¥15 已经创建了模拟器但是不能用来运行app 怎么办😭自己搞两天了
  • ¥15 关于#极限编程#的问题,请各位专家解答!
  • ¥20 win11账户锁定时间设为0无法登录
  • ¥45 C#学生成绩管理系统