- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章_网络多媒体程序设计
第十一章 网络多媒体应用程序设计
网络多媒体应用有多种类型,如视频会议、远程教育、远程医疗、VoiceOverIP 、网络
视频监控、网络电视、网络游戏等。无论哪种应用,核心都是多媒体数据的传输。
从应用开发的视角看,套接字(Socket)是各种网络传输的基础。为此,本章主要介绍
基于WinSock 的多媒体传输技术。第一节介绍WinSock 编程的基本模式。第二节介绍一个
基于屏幕捕获与 WinSock 的远程桌面图像传输与显示系统,该系统包括两部分,一是捕获
并发送桌面图像的服务器,另一个是接收并显示远程图像序列的客户端。该示例能够展现多
媒体传输的典型特征。
11.1 WinSock 编程基础
11.1.1 C/S 模型
客户端(Client )与服务器(Server)的概念是WinSock 编程最基本的框架性认知。Server
与Client 的行为模式有所不同,因此,它们的创建方式也存在差别。下面通过介绍创建流式
TCP/IP 服务器与客户端,使读者理解 WinSock 编程的基本方法。
开发Client 的基本操作如下:
a. Winsock 初始化
b. 创建一个socket
c. 连接server
d. 发送或接收数据
e. 断开连接
开发Server 的基本过程如下:
a. Winsock 初始化
b. 创建一个socket
c. 绑定socket
d. 在 socket 上侦听client
e. 接收来自client 的连接
f. 接收或发送数据
g. 断开连接
可以看到,开发基于 WinSock 的网络通讯应用程序,必须同时在服务器和客户端两个
方面着手。服务器和客户端的设计方法存在差异,但也有一些完全相同的地方。
11.1.2 客户端设计
读者可以跟着下面给出的指导,在VS2010 环境中练习基本的WinSock 程序设计。前面
一些步骤对服务器、客户端均相同。
首先创建一个新的空工程,并添加一个空的 C++源文件。确保开发环境能够访问
Windows SDK 的库、资源目录和包含目录,在正常安装有Windows SDK 的计算机上,这一
点基本没有问题。此外,还要确保开发环境已经链接了 WinSock 的库文件Ws2_32.lib ,这
可以通过在VS2010 的工程属性、配置属性、链接器、输入操作界面添加Ws2_32.lib 文件,
也可以采取下面给出的示例代码中展示的方式实现链接。下面开始添加代码,首先在第二步
得到的空C++文件中添加如代码11-1 所示的程序片断。
代码11-1 最初的WinSock 程序
_______________________________________________________________________________
# include winsock2.h
# include ws2tcpip.h
# include stdio.h
# pragma comment(lib, Ws2_32.lib)
int main() {
return 0;
}
_______________________________________________________________________________
可以看到,要使用WinSock API,应用程序必须包含winsock2.h ,它含有大部分 WinSock
的函数声明、数据结构和定义。ws2tcpip.h 则给出了与 TCP/IP 协议相关的函数、以及用于
检索地址的数据结构。此外,由于winsock2.h 文件包括了Windows.h 的核心内容,所以,
一般情况下,WinSock 应用程序不需要再包含Windows.h 文件。
接着,初始化WinSock 动态链接库。这是任何准备调用WinSock 函数的应用都必须做
的。为此需要创建一个WSADATA 对象,这里我们将其命名为wsaData ,如代码11-2 所示。
WSADATA 是一个结构体,用于存储WinSock 实现中所需要的信息。
代码11-2 创建一
文档评论(0)