| 发表于:2007-06-01 09:58:34 楼主 |
void cwsocketserverdlg::onbnclickedbutton1() { // todo: 在此添加控件通知处理程序代码 csocket serversocket; if(!(serversocket.create(6000))) { messagebox( "端口创建失败 "); } if(serversocket.listen()) { afxbeginthread(beginreceive,&serversocket); } while(1) { ; } } uint cwsocketserverdlg::beginreceive(lpvoid pparam) { csocket* serversocket=(csocket *)pparam; csocket* acceptsocket=new csocket(); cstring str1; char buf[20]; serversocket-> accept(*acceptsocket); while(1) //持续性线程函数里总会看到 { acceptsocket-> receive(buf,20,0); str1=buf; str_all+= "\r\n "; str_all+=str1; afxgetapp()-> getmainwnd()-> setdlgitemtext(idc_edit1,str_all); } delete acceptsocket; return 0; } 最开始运行线程里accept居然不阻塞等待,直接执行后面while(1)内容,我估计是因为onclick执行完后把传递给线程使用的serversocket释放掉了,于是在onclick后面加了死循环,让他先别结束。但这样做报错。 请问怎么解决才能让serversocket传递后不被onclick释放。 |
|
|
|
|