欢迎来到天天文库
浏览记录
ID:41033158
大小:33.50 KB
页数:6页
时间:2019-08-14
《扔掉Socket实现网络编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、随着计算机网络化的深入,计算机网络编程在程序设计的过程中变得日益重要。许多文章都曾经介绍过用VC++进行Socket编程的方法。但由于都是直接利用动态连接库wsock32.dll进行操作,实现比较繁琐。其实,VC++的MFC类库中提供了CAsyncSocket这样一个套接字类,用它来实现Socket编程,是非常方便的。 客户端 创建一个DialogBased项目:CSockClient。设计一对话框,增加ID_Connect(连接)、ID_Send(发送)、ID_Exit(关闭)按钮,增加ListBox控件IDC_LISTMSG和Edit控件IDC_EDITMSG,并按下表在Cl
2、assWizard中为CCSockClientDlg类添加变量。 ControlIDTypeMember IDC_EDITMSGCEditm_MSG IDC_LISTMSGClistBoxm_MSGS 在MySock.ccp中添加以下代码: #include"CSockClient.h" #include"CSockClientDlg.h" 在MySock.h中添加以下代码: public:BOOLm_bConnected;UINTm_nLength;charm_szBuffer[4096];在MySock.ccp中重载各函数MySock::MySock(){m_nL
3、ength=0;memset(m_szBuffer,0,sizeof(m_szBuffer));m_bConnected=FALSE;}MySock::~MySock(){//关闭套接字if(m_hSocket!=INVALID_SOCKET)Close();}voidMySock::OnReceive(intnErrorCode){m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);//下面两行代码用来获取对话框指针CCSockClientApp*pApp=(CCSockClientApp*)AfxGetApp();CCSockCl
4、ientDlg*pDlg=(CCSockClientDlg*)pApp->m_pMainWnd;pDlg->m_MSGS.InsertString(0,m_szBuffer);memset(m_szBuffer,0,sizeof(m_szBuffer));CAsyncSocket::OnReceive(nErrorCode);}voidMySock::OnSend(intnErrorCode){Send(m_szBuffer,m_nLength,0);m_nLength=0;memset(m_szBuffer,0,sizeof(m_szBuffer));//继续提请一个“读”的网络事
5、件,接收Server消息AsyncSelect(FD_READ);CAsyncSocket::OnSend(nErrorCode);}voidMySock::OnConnect(intnErrorCode){if(nErrorCode==0){m_bConnected=TRUE;CCSockClientApp*pApp=(CCSockClientApp*)AfxGetApp();CCSockClientDlg*pDlg=(CCSockClientDlg*)pApp->m_pMainWnd;memcpy(m_szBuffer,"Connectedto",13);strncat(m_sz
6、Buffer,pDlg->m_szServerAdr,sizeof(pDlg->m_szServerAdr));pDlg->m_MSGS.InsertString(0,m_szBuffer);AsyncSelect(FD_READ);}//提请一个“读”的网络事件,准备接收CAsyncSocket::OnConnect(nErrorCode);} 建一对话框IDD_Addr,用来输入IP地址和Port;增加两个Edit控件:IDC_Addr、IDC_Port按下表在ClassWizard中为CAddrDlg类添加变量。 ControlIDTypeMemberIDC_AddrCSt
7、ringm_AddrIDC_PortIntm_Port在CSockClientDlg.ccp中添加代码:#include"AddrDlg.h"protected:intTryCount;MySockm_clientSocket;UINTm_szPort;public:charm_szServerAdr[256]; 双击IDD_CSOCKCLIENT_DIALOG对话框中的“连接”按钮,添加以下代码:m_clientSocket.ShutDown(2);m
此文档下载收益归作者所有