Window Sockets:规范定义并记录了如何使用API与Internet协议簇(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Window Sockets实现都支持流套接字和数据报套接字。
应用程序调用Window Sockets的API实现相互之间的通讯,Window Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如图3.2.1所示
图 3.2.1应用程序和Sockets的关系
3.2.2 套接字
1.套接字的基本概念
套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各种进程使用这个相同的域互相之间用Internte协议簇来进行通信。
套接字可以根据通信性质分类,这种性质对于用户是可见的。应用程序一般仅在同一类的套接字间进行通信。不过只要底层的通信协议允许,不同类型的套接字间也照样可以通信。套接字有两种不同的类型:流套接字和数据报套接字。
2,套接字的工作原理
要通过网络进行通信,你至少需要一对套接字,其中一个运行于客户机端, 另一个运行于监控端,根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
(1)服务器监听,是监控端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
(2)客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是监控端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出监控端套接字的地址和端口号,然后就向监控端套接字提出连接请求。
(3)连接确认,是指当监控端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把监控端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而监控端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
3.3 多线程技术
线程(Thread)是指一个进程(Process)可以包含多个独立的执行路径,每一个执行路径就是一个线程。线程的出现,对于提高系统的并行性具有重要的意义。线程是进程内部的一个执行单元(可以是一个函数、一个活跃的类对象)。它的执行环境小、负担小,因此被称为一种轻型进程(Light weight Process)。在Windows的一个进程内,包含一个或多个线程。线程是进程的一种执行路径,它包含独立的堆栈和CPU寄存器状态,每个线程共享所有的进程资源包括打开的文件、信号标识及动态分配的内存等。多线程是软件开发中对多个任务进行并行处理的理想选择,可根据需要在应用程序中创建多个线程,使其并发运行在同一个进程中。一个进程中所有线程都在该进程的虚拟地址空间中,使用这些虚拟地址空间、全局变量和系统资源,线程之间的通信要比进程通信容易得多,因而多线程技术有着广泛的应用。线程的执行有两种方式:并行执行和并发执行,在多处理机的系统中不同的线程可以被分配到不同的处理机上去执行,这种执行方式叫做并行执行:而在只有一个处理机的系统上,多个线程被分时地轮流执行,这种执行方式叫做并发执行。
Windows提供了两种线程:工作者线程和用户界面线程。工作者线程(Worker Thread)没有窗口,它不需要处理消息,用户界面线程(User-Interface-Thread)通常有窗口,因此它具有自己的消息循环。 VC++局域网远程监控系统的设计与实现(6):http://www.youerw.com/jisuanji/lunwen_9599.html