WSADATA wsadata;
SOCKET server;
SOCKET client;
SOCKADDR_IN serveraddr;
void CServerDlg::OnOK() 
{
// TODO: Add extra validation here
server = socket(AF_INET,SOCK_STREAM,0);
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(12345);
serveraddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); bind(server,(SOCKADDR*)&serveraddr,sizeof(serveraddr));
listen(server,10);
while(true)
{
client=accept(server,0,0); }
}
怎么解决

解决方案 »

  1.   

    这样做肯定卡死的,需要再开一个线程,在线程函数里面while(true)
        {
            client=accept(server,0,0);
        }
    就不会卡死了~
      

  2.   

    accpet在楼主中情况是会阻塞的;
    你可以新建一个线程,去接收连接,这样主进程就不会阻塞在那里了。
      

  3.   

    太巧了,我最近也在学这。楼主所需代码如下
    把你OnOK()中那段循环改成AfxBeginThread(Accept_Thread,this);/启动线程
    UINT Accept_Thread(LPVOID lParam)
    {
       CXXDilog *dlg=(CXXDialog*)lParam; 
     while(true)
        {
          dlg->client=accept(dlg->server,0,0);   
        }
    }
    楼主可满意