局域网监控管理系统的设计与实现(4)
时间:2018-03-05 19:52 来源:毕业论文 作者:毕业论文 点击:次
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 EG EG EG EG 数据流技术 数据流技术 数据流技术 数据流技术 本局域网系统需要对计算机进行实时的监控 , 这要求客户端与服务器端能够发送与接收 图像数据。一般来说,客户端将抓取自己的屏幕信息保存为位图格式。但是,位图格式数 据较大,必须要划分为很多个数据报进行发送,这样一来服务器端需要接收很多个数据报 才能显示图像信息,这给显示图像信息带来了很大的延时,不能很好的做到实时显示。所 以这里采用 EG 数据流技术将位图数据进行压缩。 EG 即为 Joint Photographic Experts Group ,是一种有损压缩格式,冗余的图像数 据会被去除,使图像只有很小的储存空间。压缩的同时也能保留图像的质量,图像质量随 着压缩率的增大而减小。 EG 格式的图像由于这些特性所以适合用于图像的传输。在本系 (责任编辑:qin) |