您的位置:程序门 -> vc/mfc -> 网络编程



用线程从网络上下载数据的问题!望高手指点呀!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


用线程从网络上下载数据的问题!望高手指点呀![已结贴,结贴人:gp314zxj]
发表于: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(),这里停留着呢。

请问有什么方法解决这个冲突?
改为非阻塞?
还是我的用法错了,有其它方法?
急,谢谢!
小弟初学,呵呵!
发表于:2007-03-02 08:47:481楼 得分:0
怎么没有人会贴呀?
急呀。。

怎么样改成非阻塞方式呢?
在线等。。。。。
发表于:2007-03-02 09:12:542楼 得分:0
改为非阻塞方式即可
发表于:2007-03-02 09:14:333楼 得分:20
csocket   应该就是异步方式的,重载一下他的onreceive(),把接收数据的代码写在里面就可以了


快速检索

最新资讯
热门点击