读书人

MFC开发多线程SOCKET的时分,主线程界面

发布时间: 2012-09-04 14:19:30 作者: rapoo

MFC开发多线程SOCKET的时候,主线程界面为什么一直是卡住的?

C/C++ code
void CTestDlg::OnButton1() {//...Initial socketUINT ThreadFunc(LPVOID);while (true)    {        m_ClientList[m_connCount] = accept(serverSocket,(SOCKADDR*)&clientsocket,&len);        AfxBeginThread(ThreadFunc, (LPVOID)m_ClientList[m_connCount],THREAD_PRIORITY_NORMAL);        m_connCount++;    }}UINT ThreadFunc(LPVOID pParam){    SOCKET  clientS=(SOCKET)(LPVOID)pParam;    char text[BUFSIZ]={0};    while(recv(clientS, text, BUFSIZ, 0) != NULL)    {        AfxMessageBox(text);    }    return 0;}


现在的效果是第一个客户端发送的消息服务端可以收到,但是只有弹出提示框的声音,没有显示出来,而且主页面一直是卡住的..第二个客户端就连接不了了.

[解决办法]
while 没跳出来啊
[解决办法]
。。。死循环,不断创建线程,不卡还怪的。。。
[解决办法]
accept 是阻塞函数
[解决办法]
探讨

那就是应该单独创建按一个进程用于接收新的连接请求,有新的请求的时候再创建线程进程连接吗?

[解决办法]
先找些例子看看,多线程+界面+socket的
你这样问不出什么的

读书人网 >VC/MFC

热点推荐