以便更好地理解网络编程知识。
第2章网络应用
21网络编程基础
多媒体技术与网络技术的结合,使得网络生活变得多姿多彩。从此,网络生活很迷人;网络改变了和改变着人们原本的生活方式。姑且认为DirectShow是单机的多媒体技术,一旦融合了网络技术,DirectShow更显现了它强大的生命力。本章将着重介绍DirectShow技术在网络方面的应用。网络编程,当然要用到Wi
dowsSocket(套接字)技术。Socket相关的操作由一系列API函数来完成,比如socket、bi
d、liste
、co
ect、accept、se
d、se
dto、recv、recvfrom等。调用这些API函数有一定的先后次序,有些函数的参数还比较复杂,对于开发者来说,不是很好用。于是,微软的MFC提供了两个类:CAsy
cSocket和CSocket,极大地方便了Socket功能的使用。这两个类的继承关系如图31。
CObjectCAsy
cSocketCSocket
图31MFCSocket类的继承关系CAsy
cSocket类在较低层次上封装了Wi
dowsSocketAPI,并且通过内建一个(隐藏的)窗口,实现了适合Wi
dows应用的异步机制(Wi
dowsSocketAPI默认情况下工作在阻塞模式,不方便直接在消息驱动的Wi
dows程序上使用)。CSocket类从CAsy
cSocket类派生,进一步简化了Socket功能的应用。不过很遗憾,正因为这两个类都内建了一个窗
f口,它们并不是线程安全的(threadsafe);如果要在多线程环境下应用Socket功能,建议自行封装SocketAPI函数。使用Socket传输数据主要有两种方式:TCP传输和UDP传输。(OSI参考模型将网络通信分成7个层次,从低往上依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;TCP和UDP均是传输层的协议。)下面,就分别来介绍这两种数据传输方式。
提示:本章在介绍网络通信双方的时候,会使用两组关键词:服务器客户机和本地端远程端。其中,服务器客户机是根据角色来界定的;而本地端远程端是一个相对概念,依据不同的参照物,可以分别表示不同的角色。比如以服务器为参照物,可以称服务器为本地端,称客户机为远程端;而如果以客户机为参照物,可以称客户机为本地端,称服务器为远程端。
211TCP传输
TCP,Tra
sferCo
trolProtocol的缩写(传输控制协议),是一种面向连接的网络传输协议。TCP协议的特点是,支持多数据流操作,提供流控和错误控制,甚至能完成对乱序到达报文的重新排序等。因此,TCP提供了可靠的应用数据传输服务。通信双方使用TCP传输的一般过程参考如图32。
连接请求连接确认数据传送服务器客户机
图32TCP通信的一般过程本节将要实现一个TCP传输的演示程序TCPDemo,r