public class server extends Thread {
    public void run(){
        
     try{
            ServerSocket SvrSocket = new ServerSocket(PORT);
            System.out.println(">> 通信服务器启动成功......\n");            
            while(iAmKeepingRunning) {
                Socket mySocket = SvrSocket.accept();
                DebugWriter.println("通信服务器收到新的请求:" +
                    mySocket.getInetAddress().getHostAddress() + "@" + mySocket.getPort());                //debug标志
                if(rflag != null && rflag.equals("true"))
                    myReceiver = new Receiver(mySocket, true, getMaxClientId());
                else
                    myReceiver = new Receiver(mySocket, false, getMaxClientId());                myReceiver.start();                            }
        }catch(IOException e) {
            CommunicationLog.log(e.getMessage());
            e.printStackTrace();
            System.out.println(">> 通信服务器初始化失败......\n");
            System.exit(0);
        }catch(Exception e) {
            CommunicationLog.log(e.getMessage());
            e.printStackTrace();
        }
    }}Receiver 类是单独处理每一个客户连接的类。

解决方案 »

  1.   

    //debug标志
    if(rflag != null && rflag.equals("true"))这个标志rflag是干什么用的?
      

  2.   

    呵,我来废话一句:那个 debug 是用来 debug Receiver 用的。等同于下面的代码。myReceiver = new Receiver(mySocket, rflag != null && rflag.equals("true"), getMaxClientId());
    myReceiver.start();也就是说,用 True 或 False 来初始化的 Receiver 也就意味着,“Debug状态的Receiver”和“非Debug状态的Receiver”。意思解释清楚了吗?个人认为,这个用来 Debug 的方式并不好。因为在它的代码中包含了对系统的正常运行毫无意义的 Debug 逻辑。在 Debug 方面是有更好解决方案的。自己想想吧。 :)