“Socket client = clientsocket;”表示新建一个Socket的实例client,并用另一个实例clientsocket来初始化client(在C++里叫默认拷贝构造函数),并不表示二者“指向同一内存地址”
  随后,clientsocker被新的s初始化了,另一个线程的client被新的clientsokcet初始化
  所以两个线程的client是不一样的

解决方案 »

  1.   

    呵呵,不好意思,上面我说的不对
        “Socket client = clientsocket;”不表示新建一个Socket的实例client,它表示是把client作为clientsocket的引用。    我想Socket s = listener.();是系统新建了一个socket对象(通过AcceptSocket函数),然后s就成为它的引用,随后clientsocket成为s的引用,client成为clientsoket的引用    同样,第二个线程的client是系统新建的另一个socket对象的引用    所以两个线程的client是不一样的
      

  2.   

    我想Socket s = listener.();是系统新建了一个socket对象(通过AcceptSocket函数),然后s就成为它的引用,随后clientsocket成为s的引用,client成为clientsoket的引用
    //那么,client将成为s的引用;    同样,第二个线程的client是系统新建的另一个socket对象的引用
    //是新建一个引用;但clientsocket是新建的socket对象的引用;那么,client不改变指向这个新建的socket吗?
        所以两个线程的client是不一样的//所以,???