c++网络编程实例

上传人:xgs****56 文档编号:9887417 上传时间:2020-04-08 格式:DOC 页数:5 大小:251.50KB
返回 下载 相关 举报
c++网络编程实例_第1页
第1页 / 共5页
c++网络编程实例_第2页
第2页 / 共5页
c++网络编程实例_第3页
第3页 / 共5页
点击查看更多>>
资源描述
第 1 章 Visual C 网络编程概述 Visual C 后面简写为 VC 网络编程是指用户使用 MFC 类库 微软基础类库 在 VC 编译器中编写程序 以实现网络应用 用户通过 VC 编程实现的网络软件可以在网络 中不同的计算机之间互传文件 图像等信息 本章将向用户介绍基于 Windows 操作系统 的网络编程基础知识 其开发环境是 VC 在 VC 编译器中 使用 Windows Socket 进行网 络程序开发是网络编程中非常重要的一部分 1 1 网络基础知识 如果用户要进行 VC 网络编程 则必须首先了解计算机网络通信的基本框架和工作原 理 在两台或多台计算机之间进行网络通信时 其通信的双方还必须遵循相同的通信原则 和数据格式 本节将向用户介绍 OSI 七层网络模型 TCP IP 协议以及 C S 编程模型 1 1 1 OSI 七层网络模型 OSI 网络模型是一个开放式系统互联的参考模型 通过这个参考模型 用户可以非常 直观地了解网络通信的基本过程和原理 OSI 参考模型如图 1 1 所示 图 1 1 OSI 七层网络模型 第 1 章 Visual C 网络编程概述 3 用户从 OSI 网络模型可以很直观地看到 网络数据从发送方到达接收方的过程中 数 据的流向以及经过的通信层和相应的通信协议 事实上在网络通信的发送端 其通信数据 每到一个通信层 都会被该层协议在数据中添加一个包头数据 而在接收方恰好相反 数 据通过每一层时都会被该层协议剥去相应的包头数据 用户也可以这样理解 即网络模型 中的各层都是对等通信 在 OSI 七层网络模型中 各个网络层都具有各自的功能 如表 1 1 所示 表 1 1 各网络层的功能 协 议 层 名 功 能 概 述 物理硬件层 表示计算机网络中的物理设备 常见的有计算机网卡等 数据链路层 将传输数据进行压缩与加压缩 网络层 将传输数据进行网络传输 数据传输层 进行信息的网络传输 会话层 建立物理网络的连接 表示层 将传输数据以某种格式进行表示 应用层 应用程序接口 注意 在表 1 1 中列出了 OSI 七层网络模型中各层的基本功能概述 用户根据这些基本 的功能概述会对该网络模型有一个比较全面的认识 1 1 2 TCP IP 协议 TCP IP 协议实际上是一个协议簇 其包括了很多协议 例如 FTP 文本传输协议 SMTP 邮件传输协议 等 应用层协议 TCP IP 协议的网络模型只有 4 层 包括数据 链路层 网络层 数据传输层和应用层 如图 1 2 所示 在 TCP IP 网络编程模型中 各层的功能如表 1 2 所示 表 1 2 TCP IP网络协议各层功能 协 议 层 名 功 能 概 述 数据链路层 网卡等网络硬件设备以及驱动程序 网络层 IP 协议等互联协议 数据传输层 为应用程序提供通信方法 通常为 TCP UDP 协议 应用层 负责处理应用程序的实际用于层协议 在数据传输层中 包括了 TCP 和 UDP 协议 其中 TCP 协议是基于面向连接的可靠 的通信协议 其具有重发机制 即当数据被破坏或者丢失时 发送方将重发该数据 而 UDP 协议是基于用户数据报协议 属于不可靠连接通信的协议 例如 当用户使用 UDP 协议发送一条消息时 并不知道该消息是否已经到达接收方 或者在传输过程中数据已经 丢失 但是在即时通信中 UDP 协议在对一些对时间要求较高的网络数据传输方面有着 图 1 2 TCP IP 网络协议模型 第 1 篇 Visual C 网络编程基础 4 重要的 作用 1 1 3 C S 编程模型 C S 编程模型是基于可靠连接的通信模型 在通信的双方必须使用各自的 IP 地址以 及端口进行通信 否则 通信过程将无法实现 通常情况下 当用户使用 C S 模型进行通 信时 其通信的任意一方称为客户端 则另一方称为服务器端 服务器端等待客户端连接请求的到来 这个过程称为监听过程 通常 服务器监听功 能是在特定的 IP 地址和端口上进行 然后 客户端向服务器发出连接请求 服务器响应 该请求则连接成功 否则 客户端的连接请求失败 C S 编程模型如图 1 3 所示 图 1 3 C S 编程模型 由于客户端连接服务器时 需要使用服务器的 IP 地址和监听端口号才能完成连接 所以 服务器的 IP 地址和端口必须是固定的 在这里 向用户介绍部分协议所使用的端 口号码 例如 HTTP 协议 网页浏览服务 所使用的端口号为 80 FTP 协议 文本传输 所使用的端口号是 21 注意 用户在实际编程中 通信双方的连接以及数据通信均是基于 Socket 套接字 进行的 1 2 网络编程基础 网络应用程序可以使用 MFC 中封装的套接字类进行编程 也可以使用 Windows API 函数进行程序开发 相比较而言 MFC 网络编程较简单一点 用户使用也非常方便 但 是 使用 MFC 相关类编程会使用户对网络通信中的基本原理没有清晰的认识 而使用 第 1 章 Visual C 网络编程概述 5 Windows API 函数则恰好相反 可以使用户熟悉网络通信的基本原理 1 2 1 Sockets 套接字 用户在 Windows 中编写网络通信程序时 需要使用 Windows Sockets Windows 套接 字 与 Windows 套接字相关的 API 函数称为 Winsock 函数 在网络通信的双方 均有各自的套接字 并且该套接字与特定的 IP 地址和端口号相 关联 通常 套接字主要有两种类型 分别是流式套接字 SOCK STREAM 和数据报 套接字 SOCK DGRAM 其中 流式套接字是专门用于使用 TCP 协议通信的应用程 序中 而数据报套接字则是专门用于使用 UDP 协议进行通信的应用程序中 1 2 2 网络字节顺序 网络字节顺序是指 TCP IP 协议中规定的数据传输使用格式 与之相对的字节顺序是 主机字节顺序 网络字节顺序表示首先将数据中最重要的字节进行存储 例如 当数据 0 x358457 使用网络字节顺序进行存储时 该值在内存中的存放顺序将是 0 x35 0 x84 0 x57 因为通信数据可能会在不同的机器之间进行传输 所以通信数据必须 以相同的格式进行整理 只有经过格式处理的通信数据 才能在不同的机器之间进行传输 在 Winsock 中 已经提供了相关的函数处理网络字节顺序的相关问题 这些知识将在 第 2 章中具体讲解 1 3 Windows Sockets 介绍 在 MFC 类库中 几乎封装了 Windows Sockets 的全部功能 在本节中 将向用户介 绍两个主要的套接字相关类 分别是 CAsyncSocket 类和 CSocket 类 1 3 1 CAsyncSocket 类 在微软基础类库中 CAsyncSocket 类封装了异步套接字的基本功能 用户使用该类 进行网络数据传输的步骤如下 1 调用构造函数创建套接字对象 2 如果创建服务器端套接字 则调用函数 Bind 绑定本地 IP 和端口 然后调用函 数 Listen 监听客户端的请求 如果请求到来 则调用函数 Accept 响应该请求 如果创 建客户端套接字 则直接调用函数 Connect 连接服务器即可 3 调用 Send 等功能函数进行数据传输与处理 4 关闭或销毁套接字对象 注意 在 MFC 中 所有类中均有一个变量 m hWnd 表示该类的实例句柄 第 1 篇 Visual C 网络编程基础 6 1 3 2 CSocket 类 CSocket 类派生于 CAsyncSocket 类 该类不但具有 CAsyncSocket 类的基本功能 还 具有串行化功能 用户在实际编程中 通过将 CSocket 类与 CSocketFile 类和 CArchive 类 一起使用 能够很好地管理数据以及发送数据 用户使用该类进行网络编程的步骤如下 1 创建 CSocket 类对象 2 如果创建服务器端套接字 则调用函数 Bind 绑定本地 IP 和端口 然后调用函 数 Listen 监听客户端的请求 如果请求到来 则调用函数 Accept 响应该请求 如果创 建客户端套接字 则直接调用函数 Connect 连接服务器即可 3 创建与 CSocket 类对象相关联的 CSocketFile 类对象 4 创建与 CSocketFile 类相关联的 CArchive 对象 5 使用 CArchive 类对象在客户端和服务器之间进行数据传输 6 关闭或销毁 CSocket 类 CSocketFile 类和 CArchive 类的 3 个对象 1 4 小 结 本章向用户介绍了网络编程有关的网络模型 工作原理 网络协议以及在 MFC 中使 用相关的类进行网络程序编写步骤 用户通过本章的学习 将对网络编程的基础知识有一 个大致的了解 同时也为后面的实际编程操作打下基础 如果用户在后面的编程实例中 遇到一些网络编程的基础知识疑问 可以再对本章进行复习 巩固 以便更好地理解网络 编程知识
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!