Java课程设计项目示例“远程屏幕共享监控”第2部分
1.服务器端ScreenMonitoringServer程序类的编程实现及相关函数方法。
在服务器端创建ScreenMonitoringServer程序类。
在MyEclipse开发工具中,创建一个Java程序类,名称为ScreenMonitoringServer,包名为com.bluedream.monitor.server,main方法。ScreenMonitoringServer程序类的创建过程见下图。
在ScreenMonitoringServer程序类中添加一个名为listenToSomeOneClient新方法。
该方法主要实现服务器监听客户端的连接请求,一旦有客户端请求连接,就获取与客户端相关的Socket对象实例,并打印出客户端的IP地址和连接成功的提示信息。如果此时没有客户请求连接,请继续等待客户请求连接。当然,需要处理相关的异常。有关查询代码,请参见下图所示的程序。
编写ScreenMonitoringServer程序类中的main方法
在main方法中,首先识别状态——服务器是否已经启动,根据识别的状态给出提示信息。如果服务器没有启动,也就是正在执行这个程序,那么创建ScreenMonitoringServer程序类的一个对象实例,通过这个对象实例调用listenToSomeOneClient方法来监控客户端的请求连接。ScreenMonitoringServer程序类中main方法的最终实现代码可以在下面的示例图所示的程序中找到。
2.本项目服务器端SendScreenToClientThread程序类及相关功能方法的编程实现。
在服务器端创建SendScreenToClientThread程序类。
在MyEclipse开发工具中创建一个Java程序类,类名为SendScreenToClientThread,包名为com.bluedream.monitor.server。这个类继承了java.lang.Thread线程类,不需要包含main方法。有关创建SendScreenToClientThread程序类的过程,请参见下面的示例图。
在SendScreenToClientThread程序类中添加run方法。
run方法是线程体方法,定时取服务器主机的屏幕,然后通过sendImageToClient方法将截图数据发送给客户端。相关的异常也需要进行相应的处理,并根据错误的类型显示相关的错误提示信息。run方法的程序代码可以参考下面的示例图所示的程序代码。
在SendScreenToClientThread程序类中添加sendImageToClient方法。
在sendImageToClient方法中,首先将截屏生成的数据转换成字节数组,然后将转换后的图像数组封装成PO对象。最后,PO对象通过对象输出流输出到客户机。请参见下图所示的程序代码。
3.本项目客户端中ScreenMonitoringClientframe的程序类及相关功能方法的编程实现。
创建客户端的ScreenMonitoringClientframe程序类。
在MyEclipse开发工具中,创建了一个名为ScreenMonitoringClientframe的类和一个名为com.bluedream.monitor.client的包,这个类继承了javax.swing.Jframe窗口框架类和包含main方法的Java程序类。ScreenMonitoringClientframe程序类的创建过程见下图。
编程ScreenMonitoringClientframe程序类的构造方法
因为被监控的服务器屏幕需要实时显示,所以客户端程序不能设计成命令行程序,而要设计成图像窗口程序。因此,客户端程序的窗口是在ScreenMonitoringClientframe程序类的构造方法中构造的,参见下图所示的程序代码。
在ScreenMonitoringClientframe程序类中添加一个名为getScreenSize的新方法。
因为需要对服务器主机所在的屏幕进行截图,所以需要获取服务器主机的屏幕大小,可以通过getScreenSize方法返回。请参见下图所示的程序代码。
对ScreenMonitoringClientframe程序类中的main方法进行编程
在main方法中,首先识别服务器是否已经启动,只有在服务启动后才能执行客户端程序。如果服务器已经启动,将创建客户端窗口对象并显示主窗口。请参见下图所示的程序代码。
4.本项目客户端的ShowServerImagePanel程序类及相关功能方法的编程实现。
创建客户端的ShowServerImagePanel程序类
在MyEclipse开发工具中创建一个类名为ShowServerImagePanel,包名为com.bluedream.monitor.client的Java程序类,该类继承了javax.swing.JPanel panel类,实现了java.lang.Runnable接口,但不需要包含main方法。创建ShowServerImagePanel程序类的过程如下图所示。
在ShowServerImagePanel程序类中添加一个名为receiveImageFromServer的新方法。
ReceiveImageFromServer方法主要用于接收服务器发来的图像数据,转换成字节数组。然后从字节数组中获取截图对应的BufferedImage类的对象实例。最后通过调用repaint方法更新窗口,及时显示截图图像,使服务器主机的屏幕信息显示在客户端程序的窗口中,实现了实时屏幕监控的应用效果。请参见下面的示例图。
在ShowServerImagePanel程序类中实现run方法。
run方法是一种线程体方法,定时接收服务器端程序发送的截图图像的压缩数据,然后对获得的压缩数据进行分析,最终获得服务器端的截图图像,并在面板中显示输出。请参见下面的示例图。
重写ShowServerImagePanel程序类中的paint方法
在paint方法中,获得的屏幕截图图像显示在客户端主机的屏幕上,如下面的示例图所示。
5.该项目实体的MessageInfoPO程序类及相关成员属性的编程实现。
创建一个实体MessageInfoPO程序类
在MyEclipse开发工具中创建一个类名为MessageInfoPO,包名为com . blue dream . monitor . po object的Java程序类,该类实现java.io.Serializable接口,但不需要包含main方法。创建MessageInfoPO程序类的过程如下图所示。
在实体MessageInfoPO程序类中添加相关成员属性。
为了提高项目中相关程序的可维护性,在MessageInfoPO程序类中定义了需要在多个程序类中应用的数据,并设置为static静态数据,以方便获取这些属性变量。请参见下图所示的程序代码。
6.执行ScreenMonitoringServer程序并启动服务器。
网络通信中服务器和客户端的程序启动顺序,需要保证服务器端程序先执行,相关服务成功启动后,客户端程序才能启动执行。否则,客户端程序无法发送请求的连接。因此,首先执行ScreenMonitoringServer程序并启动服务器。
在MyEclipse开发工具中右键单击源程序,在弹出的快捷菜单中选择“运行方式”下拉菜单中的“Java应用程序”子菜单项,就会执行这个示例ScreenMonitoringServer类程序。操作过程请参考下面的示例图。
服务器程序正常执行,服务启动成功后,控制台会显示提示信息“服务器启动成功,监听端口:3721”,客户端程序会等待连接请求。请参见下图所示的执行结果。
7.执行ScreenMonitoringClientframe客户端程序并请求连接到服务器。
客户端程序只有在服务器程序正常执行且相应服务启动成功的情况下才能执行。在MyEclipse开发工具中右击源程序,从弹出的快捷菜单中选择“运行方式”下拉菜单中的“Java应用程序”子菜单项。这个示例ScreenMonitoringClientframe类程序将被执行。操作过程请参考下面的示例图。
当客户端程序成功连接到服务器时,控制台会显示提示消息“客户端:127.0.0.1:50504成功连接到服务器”。表示客户端已成功连接到服务器。请参考下面的执行结果示例图。
这个项目允许多个客户端同时请求连接到服务器。每次客户端成功请求连接到服务器时,控制台上会显示一条连接成功的提示消息,如下图所示。
在客户端主窗口中,将实时显示服务器主机桌面,如下图所示。但由于作者在同一台机器上执行服务器和客户端程序,服务器和客户端程序共享同一个Windows系统的桌面,所以被监控的窗口会产生嵌套的显示结果。
下面的例子是这个项目实施后的一个瞬间的截图。
Java课程设计项目示例“远程屏幕共享监控”第1部分
计算机二级考试辅导:Java IO单元计算机试题及答案
计算机二级考试辅导:Java IO单元计算机试题及答案
计算机二级考试辅导:Java IO单元计算机试题及答案
计算机二级考试辅导:Java IO单元计算机试题及答案