版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MFC网络编程及无线组网
2024/11/11219.1网络编程基本概念1.网络字节序2.套接字的类型3.套接字的初始化WinsockWinsock是Windows下网络编程的规范-WindowsSockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。在Windows平台下,一般使用Winsock进行网络编程,其初始化函数如下:
2024/11/112024/11/11319.2Winsock基础19.2.1WinsockAPISocket接口是网络编程(通常是TCP/IP协议,也可以是其他协议)的API。最早的Socket接口是Berkeley接口,在Unxi操作系统中实现。WinSock也是一个基于Socket模型的API,在MicrosoftWindows操作系统类中使用。它在Berkeley接口函数的基础之上,还增加了基于消息驱动机制的Windows扩展函数。Winscok1.1只支持TCP/IP网络,WinSock2.0增加了对更多协议的支持。这里,讨论TCP/IP网络上的API。2024/11/112024/11/11419.2.2Winsock的使用WinSock以DLL的形式提供,在调用任何WinSockAPI之前,必须调用函数WSAStartup进行初始化,最后,调用函数WSACleanUp作清理工作。MFC使用函数AfxSocketInit包装了函数WSAStartup,在WinSock应用程序的初始化函数IninInstance中调用AfxSocketInit进行初始化。程序不必调用WSACleanUp。2024/11/112024/11/115MFC对WinSocktAPI的封装MFC提供了两个类CAsyncSocket和CSocket来封装WinSockAPI,这给程序员提供了一个更简单的网络编程接口。CAsyncSocket在较低层次上封装了WinSockAPI,缺省情况下,使用该类创建的socket是非阻塞的socket,所有操作都会立即返回,如果没有得到结果,返回WSAEWOULDBLOCK,表示是一个阻塞操作。2024/11/112024/11/116
CAsyncSocketCAsyncSocket封装了低层的WinSockAPI,其成员变量m_hSocket保存其对应的socket句柄。使用CAsyncSocket的方法如下:首先,在堆或者栈中构造一个CAsyncSocket对象,例如:CAsyncSocketsock;或者CAsyncSocket*pSock=newCAsyncSocket;其次,调用Create创建socket,例如:2024/11/112024/11/117
2.socket对象的创建和捆绑Create函数首先,讨论Create函数,分析socket句柄如何被创建并和CAsyncSocket对象关联。Create的实现如下:2024/11/112024/11/118
Create函数首先,讨论Create函数,分析socket句柄如何被创建并和CAsyncSocket对象关联。Create的实现如下:捆绑(Attatch)捆绑过程类似于其他Windows对象,将在模块线程状态的WinSock映射中添加一对新的映射:this所指对象和新创建的socket对象的映射。2024/11/112024/11/119指定要监测的网络事件在捆绑完成之后,调用AsyncSelect指定新创建的socket将监测的网络事件。AsyncSelect实现如下:2024/11/112024/11/1110首先,调用socket函数创建一个socket;然后把创建的socket对象映射到CAsyncSocket对象(捆绑在一起),指定本socket要通知的网络事件,并创建一个“socket窗口”来接收网络事件消息,最后,指定socket的本地信息。下一步,是使用成员函数Connect连接远地主机,配置socket的远地信息。函数Connect类似于Bind,把指定的远地地址转换成SOCKADDR_IN对象表示的地址信息(包括网络字节序的转换),然后调用WinSock函数Connect连接远地主机,配置socket的远地端口和远地IP地址。2024/11/112024/11/1111.CSocket如果希望在用户界面线程中使用阻塞socket,则可以使用CSocket。它在非阻塞socket基础之上实现了阻塞操作,在阻塞期间实现了消息循环。对于CSocket,处理网络事件通知的函数OnAccept、OnClose、OnReceive仍然可以使用,OnConnect、OnSend在CSocket中永远不会被调用,另外OnOutOfBandData在CSocket中不鼓励使用。2024/11/112024/11/111219.3MFC网络编程示例19.3.1基于TCP的网络编程示例本示例使用tcp协议进行网络编程,示例代码保存在目录Eg19_1中。19.3.2基于UDP的网络编程示例本示例代码保存在目录Eg19_2中。2024/11/112024/11/111319.4使用json传输数据上一章中讲解了如何在Android平台下使用json进行传输数据的方法,json虽然是一种通用的网络传输数据格式,但是在不同平台下却有不同的实现,也就是说,不同平台下使用的json解析库是不一样的,下面就来讲解在MFC平台下使用json传输数据的相关知识。1.下载和编译:下载地址是:/projects/jsoncpp/2.jsoncpp的用法
2024/11/112024/11/111419.5无线组网通常在进行socket网络编程的时候,客户端需要指定服务器的IP地址才能进行socket的创建以及后续的数据通信,在通常的实验中,一般会使用作为服务器的IP地址,即服务器和客户端运行在同一台计算机上,这样可以减少实验的成本。但是在实际的产品运行时,服务器往往需要租用或者自行搭建,即服务器和客户端运行在不同的计算机系统上。为无线局域网内的计算机配置固定IP的方法如下:1).查看计算机MAC地址2).登陆路由器打开浏览器,在地址栏上输入,如图19.8所示:3).选择左边菜单的DHCP服务器|静态地址分配,如图19.10所示:4).进入静态地址分配主界面,如图19.11所示:左边菜单的DHCP服务器|静态地址分配,如图19.10所示:5)点击增加新条目,进入增加新条目界面,输入步骤一中查询到的MAC地址,并设置一个IP地址(IP地址可以任意设定,如00等),状态选择生效,点击保存,如图19.12所示:.根据提示,点击重启路由器,完成固定IP的设置。至此,一个无线局域网服务器环境已经搭建成功,智能手机上的Android客户端可以通过设定好的固定IP来访问局域网内的服务器,并进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 锅炉换管合同
- 并购投资面试题及答案
- 便民门诊面试题及答案
- 2025深圳房屋租赁合同范本模板
- 舞钢中考物理试卷及答案
- 劳动合同法不解除劳动合同
- 切边机项目可行性研究报告模板可编辑
- 私人对私人采购合同
- 2025合同协议解除合同证明范本
- 招标代理框架协议书
- 2025年宁东基地管委会公开招聘党建指导员考试笔试备考试题及答案解析
- 2025年基层社会治理教育培训考试试题及答案
- 2025版农药中毒常见症状及护理指导培训
- 人教版(2024)三年级上册数学称重大挑战课件
- 2025辽宁沈阳市和平区招聘社区工作者61人考试参考试题及答案解析
- 2025年下半年甘肃省计量研究院聘用人员招聘考试模拟试题及答案解析
- 重阳节课件教学课件
- 2025年动物科学专升本真题试卷(含答案)
- 2025年《职业病防治法》试题库及答案(新版)
- 工业金属管道安装质量检查表
- 食品安全风险隐患内部报告奖励制度(供参考)
评论
0/150
提交评论