服务器端我用一个while(1)循环不断 accept 客户端的连接请求, 当有一客户请求来时 服务器就产生两个线程,一个接受一个发送数据,当一个客户连上后,服务器两线程开始工作, 那么当该客户向服务器发消息时是不是不经过while(1)这个程序段了, 直接调用服务器的接受数据线程???? 那当很多客户端都连上来后会不会发生错乱???服务器靠什么分辨与那个客户端相连?? 求助.
while(1)
   {
      clientSocket=accept……
      AfxBeginThread(fun1……)
      AfxBeginThread(fun2……)
   }UINT fun1(void* cs){}
UINT fun2(void* cs){}

解决方案 »

  1.   

    连接上之后,在Accept返回的这个套接字上的IO不会有accept的过程了,取决于对应这个客户端的IO线程是如何处理的,客户端send不会让服务段产生新的线程由于你是给每一个客户端都创建了2个线程来处理IO,所以不会冲突,你的每一个线程都仅为对应的一个客户端服务,Accept之后,会产生一个新的对应这个客户端的套接字以及,从一个传入的IP地址结构得到客户端的地址信息和端口信息,这些信息可以区分多个客户端或者多个连接
      

  2.   

    明白了,感谢楼上的. 
    服务器的accetp只会响应客户的connect请求,而不响应send. 当一个连接完成以后,也就相当与在通讯的两个端点之间建立了一条专用通道