楼主把答案说的这么明白了  在子线程中创建CSocket临时对象并Attach传入的socket句柄

解决方案 »

  1.   

    。(){
    CNsocket *netsocket;
    netsocket->Create();
    netsocket->Connect("192.168.1.106",10000);
    AfxBeginThread(BuildList,(LPVOID &)netsocket);
    }
    UINT BuildList(LPVOID p)
    {
    CNsocket *soc=(CNsocket *)p;
            CSocket socket;
            socket.Attach(*soc);
            soc->Send("dqwd",10,0);
    return 0;
    }
    我是这么做的,可当收到消息时为什么线程中OnReceive还不触发啊?
      

  2.   

     子线程新声明一个CSocket的对象attach主线程中detach的句柄
      

  3.   

    各位就不能说具体点啊?
    我的程序有什么问题吗?即使是在connect后加个detach还是不好使。
      

  4.   

    线程串参数要传socket句柄,应该是CSocket的m_hSocket变量
    听说CSocket类不是线程安全的,直接传对象可能会出问题
      

  5.   

    Attach()的参数是一个是一个SOCKET类型的套接字句柄,*soc是一个套接字对象。
      

  6.   

    SOCKET类型的套接字句柄是什么啊?句柄不是对象吗?天啊!
    句柄怎么传啊,谁能给个例子啊
      

  7.   


    你不是传递了一个指针soc吗?soc->m_hSocket应该把这个作为参数传进去。
      

  8.   

    补充一下,在线程中创建的临时对象应该是那个CSocket派生类的对象,这样才会触发你重载的OnReceive()函数。