我建了一个socket服务端,用while循环不断接受客户请求,但是不断的循环使我的EXE整个界面死点了,没有响应了,问了一下一个高手,他说用一个工作线程来做while循环。而且给了我代码,说只要把这段代码(如下)放在循环里面,界面就不会死了,可是我试了又试,还是不行啊??大哥们帮帮我啊
MSG msg;if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

解决方案 »

  1.   

    accept 是个个阻塞函数, 什么都不能响应了.
    你应该用一个线程来专门accept
      

  2.   

    我可以把accept设置为非阻塞的啊,用:
    DWORD cbInQue = 1;
    ioctlsocket(*sock, FIONBIO, &cbInQue);
      

  3.   

    娇妻accept 为等待为止
    开一条线程专门为监听
      

  4.   

    开一个线程监听阿,用WaitForSingleObject()等待触发
      

  5.   

    了解一下SOCKET的锁定与非锁定,还有IO模式对你会有很大的帮助.