本帖最后由 VisualEleven 于 2011-04-26 10:45:33 编辑

解决方案 »

  1.   

    CServerSocket,自己封装的,继承CSocket?or 直接继承CAsyncSocket?
      

  2.   

    继承CSocket,这个必须自己写么?有没有DLL
      

  3.   

    用CSocket类,还不如用socket API去写,流程很清楚
      

  4.   

    //sock1.h
    #define WM_UPDATEMSG WM_USER+100
    //////////////服务/////////////////////////////////////////
    class CServerSocket : public CSocket
    {
    public:
     CServerSocket();
     virtual ~CServerSocket();
     CWnd* m_pParentWnd;
     virtual void OnReceive(int nErrorCode);
    };
    //////////////监听/////////////////////////////////////////
    class CListenSocket : public CSocket
    {
    public:
     CListenSocket();
     virtual ~CListenSocket();
     CWnd* m_pParentWnd;
     virtual void OnAccept(int nErrorCode);
    };
    //////////////客户/////////////////////////////////////////
    class CClientSocket : public CSocket
    {
    public:
     CClientSocket();
     virtual ~CClientSocket();
    };//sock1.cpp
    #include "stdafx.h"
    #include "sock1.h"
    //////////////服务/////////////////////////////////////////
    CServerSocket::CServerSocket()
    {
    }
    CServerSocket::~CServerSocket()
    {
    }
    void CServerSocket::OnReceive(int nErrorCode) 
    {
     char buff[1024];
     int nLen = CSocket::Receive(buff,1024);
     m_pParentWnd->PostMessage (WM_UPDATEMSG,(WPARAM)buff,(LPARAM)nLen);
     CSocket::OnReceive(nErrorCode); 
    }
    //////////////监听/////////////////////////////////////////
    CListenSocket::CListenSocket()
    {
    }
    CListenSocket::~CListenSocket()
    {
    }
    void CListenSocket::OnAccept(int nErrorCode) 
    {
     CServerSocket* pSocket=new CServerSocket;
     CSocket::Accept (*pSocket);
     pSocket->m_pParentWnd=m_pParentWnd; CSocket::OnAccept(nErrorCode);
    }
    //////////////客户/////////////////////////////////////////
    CClientSocket::CClientSocket()
    {
    }
    CClientSocket::~CClientSocket()
    {
    }/*////////////使用/////////////////////////////////////////
    //步骤0:包含头文件
    #include "sock1.h"
    //步骤1:定义监听,客户变量
    CListenSocket m_ListenSocket;
    CClientSocket m_ClientSocket;
    //步骤2:开始监听
    m_ListenSocket.Close();
    if(m_ListenSocket.Create(1500))
    {
     m_ListenSocket.Listen();
     m_ListenSocket.m_pParentWnd=this;
    }
    //步骤3:客户连接服务
    m_ClientSocket.Close();
    m_ClientSocket.Create();
    if(m_ClientSocket.Connect("127.0.0.1",1500))
    {
     AfxMessageBox("联机成功!");
    }
    //步骤4:发送数据
    m_ClientSocket.Send(str,str.GetLength());
    //步骤5:消息响应
    LRESULT XXX::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
     switch(message)
     {
     case WM_UPDATEMSG:
     // Pmsg((char*)wParam,(int)lParam);
      AfxMessageBox(CString((char*)wParam));
     default:
      break;
     } 
     return XXX::DefWindowProc(message, wParam, lParam);
    }
    /*//////////////////////////////////////////////
    是不是这个。。!对不
      

  5.   

    这个太复杂啦  vs2008中有一个socket控件  很简单的   你可以用下