服务器端保持同客户端的socket连接,并将数据(一个结构体)发送给客户端可是客户端我是基于ActiveX建立的,我这样做:
1 添加一个新类 基类是CSocket 名字叫做CRecieveSocket
2 重载OnReceive 
 下面是我做完后有错误的做法
我的控件主类名字是CGISClientServiceCtrl
我在CRecieveSocket头文件中申明class CGISClientServiceCtrl 实现文件中包含了头文件
定义了一个指向CGISClientServiceCtrl 的指针,并在CReceiveSocket类中返回此指针 
这样我好在CGISClientServiceCtrl 定义一个成员函数访问此类的OnRecieve可是我在对话框应用程序中这样没有问题,但在ActiveX程序中就告诉我没有合适的构造函数 导致了我不能在CGISClientServiceCtrl 里面访问OnRecieve方法,不能访问自然也就不能接收服务器端发过来的数据了请问在ActiveX里面究竟怎么支持这种类型的Socket接收数据?如果需要源代码,请告诉我 我一直在线,我已经查找过所有vc板块的faq了 很遗憾 没有相关的,也许我经验不够......请大家一定要帮忙啊

解决方案 »

  1.   

    你把它声明为public得,然后使用消息得机制
      

  2.   

    http://community.csdn.net/Expert/topic/4065/4065032.xml?temp=.453808
      

  3.   

    改成:
    class CAcceptSocket : public CSocket
    {
    // Operations
    public:
    CAcceptSocket(CGISClientServiceCtrl *pGISClientServiceCtrl);
    virtual ~CAcceptSocket();
    CAcceptSocket()
    {
    };
    }因为,你在:
    class CGISClientServiceCtrl : public COleControl
    {
    public:
    CAcceptSocket m_AcceptSocket;
    }m_AcceptSocket无法访问你所提供的构造函数进行构造。
      

  4.   

    问: sinall 那样构造之后没有什么要处理的吧?
      

  5.   

    问: sinall
    我在OnReceive里面接收了一次数据 可第二次没有继续接收 请问这是什么原因?
      

  6.   

    问: sinall 那样构造之后没有什么要处理的吧?
    ——修改后,调用空的构造函数,是否符合你的要求,需要你自己判断;我不知道你原来的构造函数有什么用途,你可以修改程序,使其调用你自定义的构造函数。我在OnReceive里面接收了一次数据 可第二次没有继续接收 请问这是什么原因?
    ——不太清楚,最好到网络编程版问问。
      

  7.   

    你把程序发给我看看,接收发送得都发过来。劝你最好不要使用CSocket类,这个类并不像你想得那么好使,如果你是大量得数据你最好不要使用这个类,因为你生成自己得线程会非常麻烦。
    我就是由于这个原因所以一切都推到重来得!!
      

  8.   

    谢谢ddgfei 收到你的邮件 非常感谢