2 . 1 . 1 套接字简介
客户端和服务器端的相互通信和数据交换是本系统实现的基础,而套接字 Socket 网络
技术是实现网络通信必不可少的技术 , 所以本系统的实现这就不得不用到套接字 Socket 网
络技术。
在网络中不同主机之间, Socket 套接字充当了一个通信的桥梁来实现数据的交换。
Socket 套接字支持 TCP/IP 技术 , 网络通信的过程中都需要用到套接字 , 通信之前不要创 建
Socket 套接字。它相当于规定了主机间进行通信时规范,可以被认为是连接不同主机来实
现现双向通信的端点。 Socket 套接字中有着相关函数来创建不同主机进程之间的连接和实
现通信过程。
2 . 1 . 2 套接字相关函数
( 1 )初始化套接字库
调用套接字相关函数之前必须先初始化套接字库,函数 WSAStartup() 即为初始化套接
字函数。函数 WSAStartup() 的原型如下:
int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData);
返回值为零表示初始化成功 。 否则 , 初始化失败 。 参数 wVersionRequested 代表当前套
接字库的版本号。设置版本号为 2.0 代码如下:
WORD wVersionRequested=MAKEWORD(2,0);
初始化套接字库代码如下:WSAData data; // 定义 WSAData 变量
WORD wVersionRequested=MAKEWORD(2,0); // 定义套接字库版本号
::WSAStartup (wVersionRequested,&data); // 初始化套接字库
当套接字使用完毕后,应该用 WSACleanup() 释放该套接字库。代码如下:
::WSACleanup();
( 2 )创建套接字
函数 socket() 为创建套接字函数,该函数原型如下:
SOCKET socket (
int af,// 指定套接字所使用的地址格式,在本章中只能设置为 AF_INET
int type, // 套接字类型
int protocol // 如果参数 type 已经指定套接字类型为 TCP 或 UDP ,则该参数可以设
置为 0
);
创建失败会返回 INVALID_SOCKET 。
( 3 )绑定地址信息
想要使用套接字进行通信得要将套接字绑定到指定的地址结构信息。函数 bind() 为套
接字绑定函数。该函数原型如下:
int bind (
SOCKET s, // 套接字句柄
const struct sockaddr FAR* name,// 地址结构信息
int namelen // 地址结构的大小
);
返回值为零表示套接字绑定成功。
( 4 )数据接收与发送
发送数据函数:
int send (SOCKET s, const char FAR * buf, int len, int flags);
接收数据函数:
int recv (SOCKET s, char FAR* buf, int len, int flags);
两个函数中参数 buf 是一个指针变量 , 指向数据接收或是发送的缓冲区 , flags 一般 为( 5 )关闭套接字
函数 closesocket() 即为关闭套接字函数,可以关闭创建的套接字。函数原型如下:
int closesocket (
SOCKET s // 将关闭的套接字句柄
);
2 2 2 2 . . . . 2 2 2 2 JPEG JPEG JPEG JPEG 数据流技术 数据流技术 数据流技术 数据流技术
本局域网系统需要对计算机进行实时的监控 , 这要求客户端与服务器端能够发送与接收
图像数据。一般来说,客户端将抓取自己的屏幕信息保存为位图格式。但是,位图格式数
据较大,必须要划分为很多个数据报进行发送,这样一来服务器端需要接收很多个数据报
才能显示图像信息,这给显示图像信息带来了很大的延时,不能很好的做到实时显示。所
以这里采用 JPEG 数据流技术将位图数据进行压缩。
JPEG 即为 Joint Photographic Experts Group ,是一种有损压缩格式,冗余的图像数
据会被去除,使图像只有很小的储存空间。压缩的同时也能保留图像的质量,图像质量随
着压缩率的增大而减小。 JPEG 格式的图像由于这些特性所以适合用于图像的传输。在本系 局域网监控管理系统的设计与实现(4):http://www.751com.cn/jisuanji/lunwen_10576.html