startServer静态方法,可以直接在main方法中调用。
"并没有用到呀为什么还要定义呢?"
t.socket=esock; //用到了吗?
t.start(); //开始线程
        

解决方案 »

  1.   

    t.socket=esock用到的是类开始是定义的protected Socket socket;吧不是我说的那个sock阿
      

  2.   

    我想本来该程序的作者可能是想在while循环里用的。但是这样会出现问题的。
      

  3.   

    书上经常有写错的时候,这个Socket sock;好象是没用到吧
    startServer(int,class)MTServerBase类中的一个静态方法,没什么特别的啊
      

  4.   

    大概意思好象是循环里不停地启用线程,输出String s ,输出完后就停止该线程
      

  5.   

    他是不是在调用自己本身的类呢?newInstance()是什么意思?
      

  6.   

    startServer(int port,class clobj)
                         ^^^^^^^^^^^
    因为这是静态方法,所以使用这个参数来构造
    MTServerBase t = (MTServerBase)clobj.newInstance();该程序的目的:
    startServer:构造MTServerBase,并创建Socketserver开始侦听,
    如果有连接请求则开服务线程(run中所实现的)。
      

  7.   

    本人认为思路如下。设计比较巧妙。
    首先定义一个MTServerBase的基类,继承线程。覆盖掉run方法具体内容是有一个client连上后,就向他发送一个I am a test server.Goodbye字符串然后关闭连接,线程结束。
    这样看来,他只能同时接收一次呼叫。但是,static public void startServer(int port,class clobj)这个方法就派上了用场,这样定义是有理由的,1:为static的,可以从外部动态改变端口号和实现基类。2:也就是最重要的一点是他是static是不属于对象的,在对象加载时有了,给他端口号和实现server功能的基类后,他就会根据定制创建端口号,然后利用类在内存中的反射Class类(这是java的重要方法,你执行main时,这个类虽然没有初始化,但是在内存中已经有了这个类在内存中的反射类这是继承了java.lang.Class的一个类,里面有关于MTServerBase类的属性和方法描述,但这不是MTServerBase的对象!注意)用一个死循环。这个时候,你再用newInstance方法得到他的一个实例(这个方法在jdbc中常用,是超越new方法之上的实例化方法,对Class类的子类起作用也就是MTServerBase的那个反射类)因为MTServerBase继承线程类,就可以不断创建server类来服务与这个端口相连的client,从而实现了同时处理功能。还有protected Socket socket用到了,在while循环里。问题你可以qq和我联系
      

  8.   

    newInstance
    创建一个新的实体,跟class.forname()差不多。主要目的是创建一个类的实体。
      

  9.   

    程序中的:
    MTServerBase t = (MTServerBase)clobj.newInstance();
    改成:
    MTServerBase t = new MTServerBase();可以吗?如果可以,这两个有什么区别吗?