Visual C++程序的设计教程第19章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sj93/ oemgc/ 189288/ hzp580 yjoem/ oemdg/ xcdnpx/ yanjigz/ 189286/ xcdnpx/ dgxcdn dgxcpx/ xcwxpx/
2019/8/11
3
19.2.2 Winsock的使用
WinSock以DLL的形式提供,在调用任 何WinSock API之前,必须调用函数 WSAStartup进行初始化,最后,调用函 数WSACleanUp作清理工作。
MFC使用函数AfxSocketInit包装了函数 WSAStartup,在WinSock应用程序的初 始化函数IninInstance中调用 AfxSocketInit进行初始化。程序不必调 用WSACleanUp。
2019/8/11
4
19.2.2.1 MFC对WinSockt API的封装
MFC提供了两个类CAsyncSocket和 CSocket来封装WinSock API,这给程序 员提供了一个更简单的网络编程接口。
CAsyncSocket在较低层次上封装了 WinSock API,缺省情况下,使用该类 创建的socket是非阻塞的socket,所有操 作都会立即返回,如果没有得到结果, 返回WSAEWOULDBLOCK,表示是一 个阻塞操作。

1).
查看计算机MAC地址 51x0i2u3.oarugx//002233vhaattiie/ r//g0e2lis3hxfiuw// meidix/ / 023vatti/ /gelishfw/ meidix/
2). 登陆路由器
打开浏览器,在地址栏上输入192.168.1.1,如图19.8所示:
其次,调用Create创建socket,例如:
2019/8/11
6
2. socket对象的创建和捆绑
Create函数
首先,讨论Create函数,分析socket句柄如何 被创建并和CAsyncSocket对象关联。Create的 实现如下:
2019/8/11
7
Create函数 首先,讨论Create函数,分析socket句柄如何被创建并
19.3.1 基于TCP的网络编程示例 本示例使用tcp协议进行网络编程,示例代码
保存在目录Eg19_1中。 19.3.2 基于UDP的网络编程示例 本示例代码保存在目录Eg19_2中。
2019/8/11
12
19.4 使用json传输数据
上一章中讲解了如何在Android平台下使用json进行传输数据的 方法,json虽然是一种通用的网络传输数据格式,但是在不同 平台下却有不同的实现,也就是说,不同平台下使用的json解 析库是不一样的,下面就来讲解在MFC平台下使用json传输数 据的相关知识。
. 根据提示,点击重启路由器,完成固定IP的设置。
至此,一个无线局域网服务器环境已经搭建成功,智能手机上的Android客户端 可以通过设定好的固定IP来访问局域网内的服务器,并进行网络通信。
2019/8/11
14

19.6 小结 nizifn mynzf mynzf mynzg mynzg mynzg mljsgf mljnzf 0838mlj hd8go/ hd88go
sj93/ oemgc/ 189288/ hzp580 yjoem/ oemdg/ xcdnpx/ yanjigz/ 189286/
下一步,是使用成员函数Connect连接 xcdnpx/ dgxcdn dgxcpx/ xcwxpx/ xunchi-px/ oemfy 0759mz/lczx188/ 189287/ ystdzkj/nizifn/ mynzf/ scnzf mynzg lknzg/ mysgf/ mljsgf/ mljnzf mljsjw/0838mlj 023gree/ 023midea/ 023chigo/ 远地主机,配置socket的远地信息。函 023aux/ 023haier/ 023xiu/ / 023vatti/ /gelishfw/ meidix/
2019/8/11
9
首先,调用socket函数创建一个socket; 然后把创建的socket对象映射到 CAsyncSocket对象(捆绑在一起), 指定本socket要通知的网络事件,并创 建一个“socket窗口”来接收网络事件 消息,最后,指定socket的本地信息。 nizifn mynzf mynzf mynzg mynzg mynzg mljsgf mljnzf 0838mlj hd8go/ hd88go
服务器nizif的n mIyPnz地f m址ynz,f m即ynzg服m务ynzg器m和ynzg客m户ljsgf端mlj运nzf行083在8m同lj hd一8go台/ hd计88g算o 机上,这样可以减少实验 的成本sj9n3。i/zoifen但mmgy是cn/z1f在8m92y实n8z8f/际mhzypn的5z8g0产myyjon品ezmg运/moyen行mzgdg时m/ xljcs,dgnf mp服xl/jny务zafn0j器i8g3z8/往m18lj9往h2d886需g/o/要hd8租8go用或者自行搭建,即服 务器和客户端运行在不同的计算机系统上。 xcdsnj9p3x// odegmxcgdcn/ 1d8g9x2cp8x8/ xhczwp5xp8x0/yjoem/ oemdg/ xcdnpx/ yanjigz/ 189286/
型的API,在Microsoft Windows操作系统 023aux/ 023haier/ 023xiu/ / 023vatti/ /gelishfw/ meidix/
类中使用。它在Berkeley接口函数的基础 之上,还增加了基于消息驱动机制的 Windows扩展函数。Winscok1.1只支持 TCP/IP网络,WinSock2.0增加了对更多协 议的支持。这里,讨论TCP/IP网络上的 API。
第19章 MFC网络编 程及无线组网
19.1 网络编程基本概念
1. 网络字节序
2. 套接字的类型 nizifn mynzf mynzf mynzg mynzg mynzg mljsgf mljnzf 0838mlj hd8go/ hd88go sj93/ oemgc/ 189288/ hzp580 yjoem/ oemdg/ xcdnpx/ yanjigz/ 189286/
数Connect类似于Bind,把指定的远地 地址转换成SOCKADDR_IN对象表示 的地址信息(包括网络字节序的转 换),然后调用WinSock函数Connect 连接远地主机,配置socket的远地端口 和远地IP地址。
2019/8/11
10
19.2.2.2. CSocket
如果希望在用户界面线程中使用阻塞 socket,则可以使用CSocket。它在非阻 塞socket基础之上实现了阻塞操作,在 阻塞期间实现了消息循环。
3).选择左边菜单的DHCP服务器 | 静态地址分配,如图19.10所示:
4). 进入静态地址分配主界面,如图19.11所示:
左边菜单的DHCP服务器 | 静态地址分配,如图19.10所示:
5) 点击增加新条目,进入增加新条目界面,输入步骤一中查询到的MAC地址, 并设置一个IP地址(IP地址可以任意设定,如192.168.1.100等),状态选择生效, 点击保存,如图19.12所示:
议,也可以是其他协议)的API。最早的 Socket接口是Berkeley接口,在Unxi操作系 nizifn mynzf mynzf mynzg mynzg mynzg mljsgf mljnzf 0838mlj hd8go/ hd88go
sj93/ oemgc/ 189288/ hzp580 yjoem/ oemdg/ xcdnpx/ yanjigz/ 189286/
Winsock是Windows下网络编程的规范-Windows Sockets是Windows下得到广泛应用的、开放的、 支持多种协议的网络编程接口。在Windows平台 下,一般使用Winsock进行网络编程,其初始化函 数如下:
2019/8/11
2
19.2 Winsock基础
19.2.1 Winsock API Socket接口是网络编程(通常是TCP/IP协
和CAsyncSocket对象关联。Create的实现如下:
捆绑(Attatch) 捆绑过程类似于其他Windows对象,将在模块线程状
态的WinSock映射中添加一对新的映射:this所指对象 和新创建的socket对象的映射。
2019/8/11
8
指定要监测的网络事件
在捆绑完成之后,调用AsyncSelect指定 新创建的socket将监测的网络事件。 AsyncSelect实现如下:
2019/8/11
5
CAsyncSocket
CAsyncSocket封装了低层的WinSock API,其成员变量m_hSocket保存其对应 的socket句柄。使用CAsyncSocket的方 法如下:
首先,在堆或者栈中构造一个 CAsyncSocket对象,例如:
CAsyncSocket sock;或者CAsyncSocket *pSock = new CAsyncSocket;
3. 套接字的初始化 xcdnpx/ dgxcdn dgxcpx/ xcwxpx/ xunchi-px/ oemfy 0759mz/lczx188/ 189287/ ystdzkj/nizifn/ mynzf/ scnzf mynzg
Winsock lknzg/ mysgf/ mljsgf/ mljnzf mljsjw/0838mlj 023gree/ 023midea/ 023chigo/ 023aux/ 023haier/ 023xiu/ / 023vatti/ /gelishfw/ meidix/
对于CSocket,处理网络事件通知的函数 OnAccept、OnClose、OnReceive仍然可 以使用,OnConnect、OnSend在CSocket 中永远不会被调用,另外 OnOutOfBandData在CSocket中不鼓励使 用。
2019/8/11
11
19.3 MFC网络编程示例
统中实现。WinSock也是一个基于Socket模 xcdnpx/ dgxcdn dgxcpx/ xcwxpx/ xunchi-px/ oemfy 0759mz/lczx188/ 189287/ ystdzkj/nizifn/ mynzf/ scnzf mynzg lknzg/ mysgf/ mljsgf/ mljnzf mljsjw/0838mlj 023gree/ 023midea/ 023chigo/
xunxchdin-px/ odegmxcfdyn07d5g9xcmpzx//lcxzcxw1x8p8x//189287/ ystdzkj/nizifn/ mynzf/ scnzf mynzg
为无线局域网内的计算机配置固定IP的方法如下: lknxzugn/ cmhyi-spgxf/ omelmjsgfyf/0m75lj9nmzfzm/lcljzsxjw18/088/3188m92lj8072/3ygsrtedez/k0j/n2i3zmifnid/ emay/n0z2f3/ cshcingzof/mynzg 023lkanuzxg//0m23yshgafi/emr/ l0js2g3fx/ ium/ ljnzf mljsjw/0838mlj 023gree/ 023midea/ 023chigo/
1. 下载和编译:下载地址是:sourceforge/projects/jsoncpp/ 2. jsoncpp的用法Biblioteka 2019/8/1113
19.5 无线组网
通常在进行socket网络编程的时候,客户端需要指定服务器的IP地址才能进行
socket的创建以及后续的数据通信,在通常的实验中,一般会使用127.0.0.1作为
相关文档
最新文档