VC++__Socket网络通信编程探索.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
给MySocket类添加网络事件处理函数,在这里我们添加OnClose()、OnConnect()、OnReceive()三个函数,分别用于响应服务器断开连接事件、客户发起连接请求事件、接收到服务器发来的数据,系统将自动为每个函数生成函数声明和函数体的框架,如图2.42所示。 在ChatClientDlg.cpp中将MySocket类对象指针初始化为空,并写出我们上面已声明的三个函数OnClose()、OnConnect()、OnReceive()的函数体,为它们的实现代码预留出空间(如图2.43所示),同时实现SocketReset()函数,代码如下: void CChatClientDlg::SocketReset() //SocketReset函数实现 { if(m_ClientSocket!=NULL) { delete m_ClientSocket; m_ClientSocket=NULL; } } 服务端。 采用与客户端类似的方法,在MySocket.h中添加: class CChatServerDlg; //先对主对话框类进行前导声明 CChatServerDlg * m_dlg; //定义主对话框指针 void GetDlg(CChatServerDlg * dlg); //指针获取函数 与客户端一样,系统自动为每个函数生成函数声明和函数体框架,另外我们在ChatServerDlg.cpp中将MySocket类对象指针初始化为空。 #include MySocket.h //引用MySocket类头文件,为了后面定义动态Socket对象指针 MySocket * m_ServerSocket; //MySocket类对象指针,用于动态生成与客户通信的 //Socket MySocket * m_ListenSocket; //定义MySocket类对象指针,用于动态生成监听Socket void OnReceive(); void OnClose(); void OnAccept(); //要在主对话框代码中实现的服务器端功能的三个函数 void SocketReset(); //重置销毁不再使用的套接字 在ChatServerDlg.cpp中写出OnAccept()、OnClose()、OnReceive()三个函数的函数体,为它们的实现代码预留出空间,同时实现SocketReset函数,代码如下: void CChatServerDlg::SocketReset() //SocketReset函数实现 { if(m_ServerSocket != NULL) { delete m_ServerSocket; //在此要销毁两个Socket,一个是与客户通 //信的Socket m_ServerSocket = NULL; } if(m_ListenSocket != NULL) { delete m_ListenSocket; //还有一个是监听Socket m_ListenSocket = NULL; } } 试运行的界面如图2.44所示。 (3)代码的复制、修改。 ? 客户端。 “连接”按钮事件过程代码如下: //初始化套接字,获取对话框指针 if(!AfxSocketInit()) { MessageBox(WindowSocket initial failed!,Receive,MB_ICONSTOP); return; } m_ClientSocket = new MySocket; m_ClientSocket-GetDlg(this); //连接服务器 BYTE nFild[4]; CString sIP; UpdateData(); ServerIP.GetAddress(nFild[0],nFild[1],nFild[2],nFild[3]); sIP.Format(%d.%d.%d.%d,nFild[0],nFild[1],nFild[2],nFild[3]); m_ClientSocket-Create(); // 创建客户端Socket m_ClientSocket-Connect(sIP,sPort); //发起连接请求 “断开”按钮事件过程代码如下: //断开与服务器的连接 m_ClientSocket-Close(); //关闭客户端Socket SocketReset(); //避免指针悬空 m_ListWords.AddString(从服务器断开); “发送”按钮事件过程代码如

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档