我在书上看到说服务器的socket调用listen来侦听客户的连接请求,在监听到连接请求后创建一个新的socket,并将其传送给accept.但是我在msdn的示例程序中找不到在哪里创建了新的socket.请问服务器的socket调用listen来侦听到客户的连接请求后,会触发什么消息?然后server端会调用哪个函数?谢谢

解决方案 »

  1.   

    我在看到代码m_pSocket->Listen()后就不知道程序如何运行了,请大家不吝赐教
      

  2.   

    以我的理解,服务器的socket调用listen后,做了以下两个工作,
    一是将主动套接字转为被动侦听套接字,否则无法接受客户端的连接.因为主动套接字无法接受连接,只能发起连接.
    二是,设置了用来存放<完成连接>的队列长度,所谓完成连接就是完成三次握手之后的连接,完成三次握手之后的连接存放在这个队列,等待ACCEPT来存取移走.不知道是否表述明白?
      

  3.   

    通常情况下,可以调用accept(),如果是在主线程,那么程序就会堵塞在这里,不会继续运行,等待accept()函数返回,一旦有client连接,那么accept()返回,返回的socket clients=accept(...);
    这个clients就是与客户端相关联的那个套接字