文档介绍:客户端
创建一个Dialog Based项目:CSockClient。设计一对话框,增加ID_Connect(连接)、ID_Send(发送)、ID_Exit(关闭)按钮,增加ListBox控件IDC_LISTMSG和Edit控件IDC_EDITMSG,并按下表在ClassWizard中为CCSockClientDlg类添加变量。
Control ID Type Member
IDC_EDITMSG CEdit m_MSG
IDC_LISTMSG ClistBox m_MSGS
在MySockccp中添加以下代码:
#include "CSockClienth"
#include "CSockClientDlgh"
在MySockh中添加以下代码:
public:
BOOL m_bConnected;
UINT m_nLength;
char m_szBuffer[4096];
在MySockccp中重载各函数
MySock::MySock()
{ m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
m_bConnected=FALSE;}
MySock::~MySock()
{ //关闭套接字
if(m_hSocket!=INVALID_SOCKET)
Close(); }
void MySock::OnReceive(int nErrorCode)
{ m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);
//下面两行代码用来获取对话框指针
CCSockClientApp* pApp=(CCSockClientApp*)AfxGetApp();
CCSockClientDlg* pDlg=(CCSockClientDlg*)pApp- >m_pMainWnd;
pDlg- >m_MSGSInsertString(0,m_szBuffer);
memset(m_szBuffer,0,sizeof(m_szBuffer));
CAsyncSocket::OnReceive(nErrorCode);}
void MySock::OnSend(int nErrorCode)
{ Send(m_szBuffer,m_nLength,0);
m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
//继续提请一个“读”的网络事件,接收Server消息
AsyncSelect(FD_READ);
CAsyncSocket::OnSend(nErrorCode);}
void MySock::OnConnect(int nErrorCode)
{ if (nErrorCode==0)
{ m_bConnected=TRUE;
CCSockClientApp* pApp=(CCSockClientApp*)AfxGetApp();
CCSockClientDlg* pDlg=(CCSockClientDlg*)