java屏幕监控_Java课程设计项目实例《远程屏幕分享监视》第2部分

本文详细介绍了使用Java实现远程屏幕分享监视项目的第二部分,包括服务器端ScreenMonitoringServer的编程,监听客户端连接,SendScreenToClientThread类用于定时发送屏幕截图,客户端ScreenMonitoringClientFrame的构造及显示屏幕,以及ShowServerImagePanel类用于接收并显示服务器图像。项目实现了多个客户端同时连接服务器的功能。
摘要由CSDN通过智能技术生成

Java课程设计项目实例《远程屏幕分享监视》第2部分

1、服务器端ScreenMonitoringServer程序类及相关的功能方法的编程实现

(1)创建出服务器端的ScreenMonitoringServer程序类

在MyEclipse开发工具中创建出一个类名称为ScreenMonitoringServer,程序包名称为com.bluedream.monitor.server,并且包含有main()方法的Java程序类,ScreenMonitoringServer程序类的创建过程参看如下示例图所示。

64f0514284727d252bc7967948698d70.png

(2)在ScreenMonitoringServer程序类中新增一个名称为listenToSomeOneClient方法

该方法主要实现服务器对客户端的请求连接的监听,一旦有客户请求连接,则获得该客户相关的Socket对象实例,并打印出客户机的IP地址和成功连接的提示信息;如果此时没有客户请求连接,则继续循环等待客户请求连接。当然,还需要对相关的异常进行处理。查询代码参看如下示例图所示的程序。

3ab5a75288fe7ad0b1081478921f8131.png

(3)编程ScreenMonitoringServer程序类中的main()方法

在main()方法中首先进行状态识别——服务器是否已经启动,并根据识别的状态分别给出提示信息。如果服务器没有启动,也就是本程序正在执行,则创建出ScreenMonitoringServer程序类的对象实例,并通过该对象实例调用listenToSomeOneClient方法以监听客户端的请求连接。ScreenMonitoringServer程序类中的main()方法的最终实现代码参看如下示例图所示的程序。

13242b5938424f36073e0012489ba17d.png

2、本项目服务器端SendScreenToClientThread程序类及相关的功能方法的编程实现

(1)创建出服务器端的SendScreenToClientThread程序类

在MyEclipse开发工具中创建出一个类名称为SendScreenToClientThread,程序包名称为com.bluedream.monitor.server的Java程序类,并且该类继承java.lang.Thread线程类,不需要包含有main()方法。SendScreenToClientThread程序类的创建过程参看如下示例图所示。

54bfa4c3d78156be3c4afcde27638867.png

(2)在SendScreenToClientThread程序类中新增一个run()方法

run方法为线程体方法,在该方法中定时对服务器主机的屏幕进行截图,然后通过sendImageToClient()方法将截图数据发送到客户机中。对相关的异常也需要进行对应的处理,并根据错误的类型分别显示出相关的错误提示信息。run方法的程序代码可以参看如下示例图所示的程序代码。

469e98cc788af09b1b126a74461fba97.png

(3)在SendScreenToClientThread程序类中新增一个sendImageToClient()方法

在sendImageToClient()方法中首先将屏幕截图所产生的数据转换成字节数组,然后再将转换后的图像数组封装到PO对象中。最后通过对象输出流将PO对象输出到客户端。参看如下示例图所示的程序代码。

410e69379dbe2c58a27b2334427b8af8.png

3、本项目客户端ScreenMonitoringClientFrame程序类及相关的功能方法的编程实现

(1)创建出客户端的ScreenMonitoringClientFrame程序类

在MyEclipse开发工具中创建出一个类名称为ScreenMonitoringClientFrame,程序包名称为com.bluedream.monitor.client,并且该类继承javax.swing.JFrame窗框类和包含有main()方法的Java程序类,ScreenMonitoringClientFrame程序类的创建过程参看如下示例图所示。

512031c7cfbafc193a49810ffed501e0.png

(2)编程ScreenMonitoringClientFrame程序类的构造方法

由于需要实时地显示被监视的服务器端屏幕,因此客户端程序不能设计为命令行风格的程序,而需要设计为图像窗口风格的程序。因此,在ScreenMonitoringClientFrame程序类的构造方法中构建出客户端程序的窗口,参看如下示例图所示的程序代码。

28757324403ad82f74d3e723097e7f65.png

(3)在ScreenMonitoringClientFrame程序类中新增一个名称为getScreenSize方法

由于需要对服务器主机所在的屏幕进行截图,因此需要获得服务器主机的屏幕尺寸,这可以通过getScreenSize方法返回屏幕的尺寸。参看如下示例图所示的程序代码。

d5255913a5e78bd4b037a50c36854ffe.png

(4)编程ScreenMonitoringClientFrame程序类中的main()方法

在main()方法中首先识别服务器目前是否已经启动,只在服务启动后,客户端程序才可以执行。如果服务器已经启动,则创建出客户端窗口对象,并显示出主窗口。参看如下示例图所示的程序代码。

d9bdf03f837d9a61781c5dedd73b9774.png

4、本项目客户端ShowServerImagePanel程序类及相关的功能方法的编程实现

(1)创建出客户端的ShowServerImagePanel程序类

在MyEclipse开发工具中创建出一个类名称为ShowServerImagePanel,程序包名称为com.bluedream.monitor.client的Java程序类,并且该类继承javax.swing.JPanel面板类和实现java.lang.Runnable接口,但不需要包含有main()方法。ShowServerImagePanel程序类的创建过程参看如下示例图所示。

58b803987119224081ef36c1a3d7f510.png

(2)在ShowServerImagePanel程序类中新增一个名称为receiveImageFromServer方法

receiveImageFromServer方法主要实现接收从服务器端发送的图像数据,并转换为字节数组。然后再从字节数组中获得截图所对应的BufferedImage类的对象实例,最后通过调用repaint()方法更新窗口以及时显示出截图图像,从而在客户端程序的窗口内显示出服务器主机的屏幕信息,实现实时监视屏幕的应用效果。参看如下示例图所示。

40476af2317d0d4ebde25d82ab1d0b04.png

(3)编程实现ShowServerImagePanel程序类中的run方法

run方法为线程体方法,在该方法中定时接收从服务器端程序发送的截图图像的压缩数据,然后对所获得的压缩数据进行解析,最终获得服务器端屏幕截图的图像,将此图像在面板中显示输出。参看如下示例图所示。

c2b9780cfd4d21f9b1471577c65a98f9.png

(4)在ShowServerImagePanel程序类中重写paint方法

在paint方法中将所获得的截图图像在客户端主机的屏幕上显示,参看如下示例图所示。

56b63e5c5519eac54b40d402e099ef14.png

5、本项目实体MessageInfoPO程序类及相关的成员属性的编程实现

(1)创建出实体MessageInfoPO程序类

在MyEclipse开发工具中创建出一个类名称为MessageInfoPO,程序包名称为com.bluedream.monitor.pobject的Java程序类,并且该类实现java.io.Serializable接口,但不需要包含有main()方法。MessageInfoPO程序类的创建过程参看如下示例图所示。

9e4e430e18cafb0e96d40abd2d6744b7.png

(2)在实体MessageInfoPO程序类添加相关的成员属性

为了提高项目中相关程序的可维护性,将在多个程序类中都需要应用的数据统一在MessageInfoPO程序类中定义,并设置为static静态数据以方便获得这些属性变量。参看如下示例图所示的程序代码。

294ad45c9b27d2fd5a08383299c32aa0.png

6、执行ScreenMonitoringServer程序并启动服务器

在网络通讯中的服务器和客户端在程序启动的次序上,需要保证服务器端程序首先执行,并成功地启动相关的服务后,才可以启动和执行客户端程序。否则客户端程序无法发送请求连接。因此,首先执行ScreenMonitoringServer程序并启动服务器。

在MyEclipse开发工具中右击源程序,在弹出的快捷菜单中选择“Run as”下拉菜单中的“Java Application”子菜单项目,将执行本示例ScreenMonitoringServer类程序。操作过程请参看如下示例图所示。

340f3d0152641c4b3b3a914ca618d8fb.png

服务器端程序正常执行和服务成功启动后,将在控制台上显示输出“服务器启动成功,正在监听端口:3721”的提示信息,并等待客户端程序的连接请求。参看如下示例图所示的执行结果。

2d40e03b8204717db0633b6cb7761a93.png

7、执行ScreenMonitoringClientFrame客户端程序并请求连接服务器

当服务器端程序正常执行和对应的服务成功启动后,才可以执行客户端程序。在MyEclipse开发工具中右击源程序,在弹出的快捷菜单中选择“Run as”下拉菜单中的“Java Application”子菜单项目,将执行本示例ScreenMonitoringClientFrame类程序。操作过程请参看如下示例图所示。

8d01f76e9dd0667db321ec9813770b85.png

当客户端程序成功连接到服务器后,在控制台中显示输出“客户机:127.0.0.1:50504 成功连接服务器”的提示信息。表明某个客户机已经成功连接到服务器。执行的结果请参看如下示例图所示。

c404a4bc4ec9d28138260c6f35f89d91.png

本项目允许多个客户端同时请求连接服务器,每当一个客户机成功请求连接服务器后,都会在控制台上打印输出如下示例图所示的成功连接的提示信息。

693d584c437580b4bdb4fd325597ab72.png

在客户端主窗口内将实时地显示出服务器端主机桌面,参看如下示例图所示。但由于作者是在同一台机器中执行服务器和客户机程序,服务器端程序和客户端程序共享同一个Windows系统的桌面,因此监视的窗口会产生嵌套显示的结果。

e12253d38ec2674cc39275e0efcb9b05.png

如下示例图为本项目执行后的某个时刻的截图。

833c42112556d40bf51bf497fe40b392.png

Java课程设计项目实例《远程屏幕分享监视》第1部分

计算机等级二级考试辅导:Java IO单元机试题及解答(第4部分)

计算机等级二级考试辅导:Java IO单元机试题及解答(第3部分)

计算机等级二级考试辅导:Java IO单元机试题及解答(第2部分)

计算机等级二级考试辅导:Java IO单元机试题及解答(第1部分)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值