我现在写的程序,在客户端,我把Socket发送消息写在线程里,服务端能收到消息,SEND返回值也是包的大小,但客户端就是收不到,如果把Socket发送消息写在一个按钮下,客户端就可以收得到消息,请大家帮忙,这些什么原因呀?

解决方案 »

  1.   

    CSocket不是线程安全的,最好用CAsyncSocket,CSocket内部的阻塞循环用在线程里会有问题
      

  2.   

    CSocket是基于界面的,所以在线程中创建会有问题
      

  3.   

    现在是在线程中不知道怎么把socket和界面相联?
      

  4.   

    其实CSocket也可以用在线程里,我做客户端就经常这样,没发生过问题。
      

  5.   

    如果你在线程之间传递CAsyncSocket*(CSocket*)的话,可能会有上述问题。MFC的大多数类有个一般性原则:创建,使用,销毁应该在同一线程,当然可以用在线程线程中。如果需要跨线程传递CSocket*/CAsyncSocket*,应该使用Deatch/Attch.
      

  6.   

    http://support.microsoft.com/default.aspx?scid=kb;en-us;175668How to pass a socket connection between threads in an MFC application in Visual C++