- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C++socket编程》.doc
第3章 网络应用
3.1 网络编程基础
多媒体技术与网络技术的结合,使得网络生活变得多姿多彩。从此,网络生活很迷人;网络改变了和改变着人们原本的生活方式。姑且认为DirectShow是单机的多媒体技术,一旦融合了网络技术,DirectShow更显现了它强大的生命力。本章将着重介绍DirectShow技术在网络方面的应用。
网络编程,当然要用到Windows Socket(套接字)技术。Socket相关的操作由一系列API函数来完成,比如socket、bind、listen、connect、accept、send、sendto、recv、recvfrom等。调用这些API函数有一定的先后次序,有些函数的参数还比较复杂,对于开发者来说,不是很好用。于是,微软的MFC提供了两个类:CAsyncSocket和CSocket,极大地方便了Socket功能的使用。这两个类的继承关系如图3.1。
图3.1 MFC Socket类的继承关系
CAsyncSocket类在较低层次上封装了Windows Socket API,并且通过内建一个(隐藏的)窗口,实现了适合Windows应用的异步机制(Windows Socket API默认情况下工作在阻塞模式,不方便直接在消息驱动的Windows程序上使用)。CSocket类从CAsyncSocket类派生,进一步简化了Socket功能的应用。不过很遗憾,正因为这两个类都内建了一个窗口,它们并不是线程安全的(thread-safe);如果要在多线程环境下应用Socket功能,建议自行封装Socket API函数。
使用Socket传输数据主要有两种方式:TCP传输和UDP传输。(OSI参考模型将网络通信分成7个层次,从低往上依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;TCP和UDP均是传输层的协议。)下面,就分别来介绍这两种数据传输方式。
提示:本章在介绍网络通信双方的时候,会使用两组关键词:服务器-客户机和本地端-远程端。其中,服务器-客户机是根据角色来界定的;而本地端-远程端是一个相对概念,依据不同的参照物,可以分别表示不同的角色。比如以服务器为参照物,可以称服务器为本地端,称客户机为远程端;而如果以客户机为参照物,可以称客户机为本地端,称服务器为远程端。
3.1.1 TCP传输
TCP,Transfer Control Protocol的缩写(传输控制协议),是一种面向连接的网络传输协议。TCP协议的特点是,支持多数据流操作,提供流控和错误控制,甚至能完成对乱序到达报文的重新排序等。因此,TCP提供了可靠的应用数据传输服务。
通信双方使用TCP传输的一般过程参考如图3.2。
图3.2 TCP通信的一般过程
本节将要实现一个TCP传输的演示程序TCPDemo,它包括服务器和客户机两个部分。它们的程序界面如图3.3。
图3.3 TCP传输演示程序界面
TCPDemo的演示过程如下:
(1)将服务器和客户机两部分程序都运行起来(此时服务器已经启动了侦听客户机连接请求的子线程,侦听端口号为10028)。
(2)在客户机程序界面上输入服务器的IP地址(如果服务器和客户机运行在同一台机器上,IP地址可以指定为)、侦听端口号(因为服务器在10028端口上侦听,这里也应该指定为10028)。
(3)点击客户机程序界面上的“Connect”按钮,向服务器发送Socket连接请求。
(4)服务器侦听到有客户机的连接请求后便接受它(于是在两个程序之间就建立了一条可靠的Socket连接)。然后服务器会向客户机发送两次字符串数据。
(5)客户机接收到数据后,弹出两次如图3.4的消息框。
图3.4 TCP传输客户机接收到数据后显示的消息框
提示:TCPDemo为什么使用10028作为TCP通信的端口号?因为TCP数据包的TCP头结构中,使用了16位的域来表示一个端口号。因此,有65536个可能的端口号。不过,0-1023是周知口(众所周知的端口,比如80是超文本传输协议http的端口,25是简单邮件传输协议smtp的端口,20和21是文件传输协议ftp的端口等),比1023大的端口号通常被称为高端口号。应用程序一般使用高端口号提供自己的通信服务。TCPDemo使用10028端口是偶然的,只要比1023大就可以了。
TCPDemo在具体实现时,设计了一个CTCPListener类专门用于服务器对特定TCP端口的侦听。另外,设计了一个CStreamSocket类专门用于TCP数据的传输。CStreamSocket作为基类,服务器程序从它派生出另一个类CSocketSender专门用于数据的发送,客户机程序从它派生出CSocketReceiver类专门用于数据的接收。这些类的继承结构如图3.5。
图3.
您可能关注的文档
- 《AsiaPacific Regional Trade Agreements》.pdf
- 《ASS- VSU - Requirements to obtain a Shengen Visa (INVITO) (EN)》.doc
- 《Asset Valuation & Allocation Models- Prudential Financial》.pdf
- 《Asset-valuation-debt Chinese 2016》.ppt
- 《Atmel Touch Library.pdf ourdev_452103》.pdf
- 《Atomic clock transitions in silicon-based spin qubits》.pdf
- 《AU5790 Single wire CAN transceiver》.pdf
- 《aune mini usb dac se》.pdf
- 《auto optimized service convergence BS config UMTS》.pdf
- 《AutoCAD实用教程:欧式橱柜门板的建模方法》.doc
- [精编] 陕西省中考数学近三年(2022年-2024年)真题分类汇编--填空题(按知识点分类)--答案解析.docx
- 陕西省中考数学近三年(2022年-2024年)真题分类汇编--选择题(按知识点分类).docx
- 陕西省中考数学近三年(2022年-2024年)真题分类汇编--选择题(按知识点分类)--答案解析.docx
- 病假解除劳动合同协议书范本(标准版).docx
- 枸杞批发合同.docx
- 烟花爆竹经营协议(标准版).docx
- 公园项目防水工程施工协议书(标准版).docx
- 委托设计广告制作合同.docx
- 土石方建筑材料运输合同(标准版).docx
- 2024至2030年微波通讯贴片项目投资价值分析报告.docx
文档评论(0)