| 发表于:2007-03-01 19:50:35 楼主 |
我是client端,定义了一个csocket m_clientsocket对象,并和对方建立了阻塞方式的连接,然后在线程的执行函数里边m_clientsocket.create,m_clientsocket.conect()然后再线程的while循环里调用m_clientsocket.recevie()。这样可以收到数据。 连接,和收数据都没有问题,但是问题出在关闭连接的时候: 阻塞方式如果没有数据,它会一直停留在m_clientsocket.recevie(),而我如果这个时候要关闭client端,就必须调用m_clientsocket.close(),然后调用waitforsingleobject()等待线程结束,但是因为我是在线程里边调用m_clientsocket.create的,所以在停止button的代码里边调用m_clientsocket.close(),程序是会崩溃的,但是如果我不m_clientsocket.close(),直接wait,那么线程永远不会结束,因为它在m_clientsocket.recevie(),这里停留着呢。 请问有什么方法解决这个冲突? 改为非阻塞? 还是我的用法错了,有其它方法? 急,谢谢! 小弟初学,呵呵! |
|
|
|
|