论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

基于linux的远程控制技术客户端的实现(论文+程序)

3.2.2   远程连接通信

该设计采用C/S模式,采用TCP协议实现客户端与服务器端的数据交换。通信过程如图5所示:Server端侦听相连的协议端口,在收到Client端程序的连接请求后动态分配一个socket控件,在Server和Client程序之间建立连接,无论哪一端通过Senddata发送数据,都可以在对端激发DataArrival事件接收数据,这样就实现了两端的数据交换。

copyright paper51.com

内容来自论文无忧网 www.paper51.com

图5 Client/Server连接建立步骤 http://www.paper51.com

3.3 远程控制软件客户端的实现 内容来自www.paper51.com

远程控制软件是一个远程桌面控制的开源软件,客户端要求很直观的控制远程电脑的桌面,并利用鼠标和键盘直接控制远端电脑。其功能的实现过程是:首先通过客户端连接到运行的服务器端,键盘和鼠标动作被发送到服务器端,然后将服务器端的桌面压缩,通过RFB协议发送到客户端。最终实现控制远程电脑的操作。

内容来自论文无忧网 www.paper51.com

3.3.1   客户端总体代码

copyright paper51.com

分析了下客户端部分代码,vncviewer下的文件很多,我们可以按照它们各自的功能做以下划分,如表1: 内容来自www.paper51.com

表1 vncviewer功能划分表 内容来自www.paper51.com

Kernel

内容来自论文无忧网 www.paper51.com

vncviewer.c desktop.c

内容来自www.paper51.com

GUI http://www.paper51.com

colour.c cursur.c dialogs.c fullscreen.c popup.c selection.c shm.c tunnel.c  argsersources.c

内容来自www.paper51.com

Misc 内容来自www.paper51.com

misc.c 

内容来自论文无忧网 www.paper51.com

Network

内容来自论文无忧网 www.paper51.com

sockets.c rfbproto.c listen.c http://www.paper51.com

Encoding

paper51.com

ree.c corre.c hextile.c zlib.c tight.c  caps.c  copyright paper51.com

其客户端的主要功能模块结构如下:

paper51.com

Kernel下的文件的工作主要是连接到vncserver,启动TCP连接到vncserver,告诉服务器端,哪种像素格式和编码是需要的。以便找到最佳的像素格式和编码。达到远程控制桌面的最佳效果。 paper51.com

GUI下的文件主要的工作是处理色彩(即rfd像素格式、X虚拟和颜色),光标的更新,桌面窗口,全屏模式,处理缓冲区等。

copyright paper51.com

Misc下的文件主要的工作是更好的完善对远程桌面图形的控制。

内容来自论文无忧网 www.paper51.com

Network下的文件的主要工作是创建TCP套接字,连接到服务器端,利用RFB协议处理屏幕显示功能。

paper51.com

Encoding下的文件的主要工作是提供编码,它为远程桌面提供了很好的压缩方法,也为客户端提供最合适的远程桌面图形。

paper51.com

3.3.2   客户端和服务器端的连接通信 http://www.paper51.com

远程控制软件的客户端与服务器端的通信采用TCP协议,TCP协议是一种可靠的面向连接的传送服务。TCP套接字可以实现基于TCP/IP协议、面向连接的通信模式。字节流套接字TCP的服务进程和客户进程在通信前必须建立连接,建立连接及通信的步骤见图6所示。

paper51.com

内容来自论文无忧网 www.paper51.com

图6面向连接协议的字节流套接字TCP paper51.com

1)    服务进程首先调用Socket()创建一个字节流套接字,并调用Bind()将服务器地址捆扎在该套接字上,接着调用Listen()监听连接请求,随后调用Accept()做好与客户进程建立连接的准备,无连接请求时,服务进程被阻塞。 内容来自论文无忧网 www.paper51.com

2)     客户进程调用Socket()创建字节流套接字,然后调用Connect()向服务进程发出连接请求。

copyright paper51.com

3)     当连接请求到来后,服务进程被唤醒,生成一个新的字节流套接字,并用新的套接字同客户进程的套接字建立连接,而服务进程最早生成的套接字则继续用于监听网络上的服务请求。 copyright paper51.com

4)     服务进程和客户进程通过调用Read()和Write()交换数据。

copyright paper51.com

5)     服务进程和客户进程通过调用Close()撤消套接字并中断连接。 paper51.com

VNC Client通过TCP套接字来实现与VNC Server的通信连接。无论是服务器还是客户,都必须首先产生其TCP通信传输端点,即TCP套接字。应用程序通过调用socket()产生套接字。该函数调用必须给出所使用的地址簇、套接字类型和协议标志。该函数返回一个套接字描述符。之后产生的所有I/O操作都是作用于该套接字描述符。其数据结构包括一个网络连接的5种信息:通信协议、本地协议地址、本机主机端口、远程主机地址和远程协议端口。主要函数意义如表2。

内容来自www.paper51.com

------分隔线----------------------------
联系方式