下面是服务器中的一个线程,想实现对每一个链接建立一个套接字的功能:
……
SOCKET client;
listen(serve,10);
while(true)
{
  cient = accept(serve,……);
  AfxBeginThread(cliendThread,(LPVOID)client);
}
程序不是顺序执行吗,线程会在while中一直循环,怎么能接受多个链接呢?listen 执行一次后还能侦听其他的链接请求吗?如果能侦听,不就跳出循环了吗?真搞不懂了,肯请高手指点迷津。先谢了 ,分等你。

解决方案 »

  1.   

    没有完全弄懂楼主的意思,不过
    while(true)
    {
      cient = accept(serve,……);
      AfxBeginThread(cliendThread,(LPVOID)client);
    }
    是一个死循环,没有见到 break 之类的跳循环语句。
      

  2.   

    listen是顺序执行,执行完listen之后,该监听端口处于listening状态,listen(serve,10);表示最多允许10个并发连接,accept如果是阻塞方式,将阻塞在那里,直到有连接,才会执行下面的代码