java实现屏幕共享功能实例分析实现屏幕共享功能实例分析
主要介绍了java实现屏幕共享功能的方法,以实例形式分析了屏幕共享功能的客户端与服务端的详细实现方法,是
非常具有实用价值的技巧,需要的朋友可以参考下
本文实例讲述了java实现屏幕共享功能的方法。分享给大家供大家参考。具体分析如下:
最近在做软件软件工程的课程设计,做一个用于实验室的屏幕监控系统,参考各种前人代码,最后领悟之后要转换自己的代
码,初学者都是这样模仿过来的。
说到屏幕监控系统,有教师端和学生端,教师端就是Server端,学生端就做Client端。系统里比较有趣的一个地方应该算是屏
幕广播与屏幕监控吧,其余什么点名签到,锁屏,定时关机的,就相对来说简单点。
屏幕广播,在功能实现上面,说白了,就是教师端的机器不断截取屏幕信息,以图片的形式发送到每一个学生端的电脑上面,
由此学生能够看见老师在电脑上的操作,这就是所谓的屏幕广播。
这里面有个麻烦的地方,就是截取屏幕图片的时候,是没有鼠标信息。不过有两种解决办法:
①在发送截图信息时,在图片上绘制一个鼠标,这样在学生端就会有两个鼠标,学生端可以移动自己电脑上的鼠标。
②发送教师端的鼠标坐标到学生端上,学生端的电脑鼠标根据坐标信息实时移动,这里其实是涉及到控制的功能了,学生端就
不能移动鼠标了。
屏幕监控相对棘手点,其实这是这包含俩功能:
①教师监控所有学生电脑屏幕的功能;
②教师控制某一个学生的电脑;
因为涉及到并发,每个client都要实时的把屏幕信息发到教师端上,会有点麻烦,不过还是可以实现。
这里暂时实现了不带鼠标的屏幕共享功能,比较简单,有待完善,不过可以作为一个工具类在后面集成使用。
首先是教师端Server:
复制代码 代码如下:
package Test;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.imageio.ImageIO;
/*
* ly 2014-11-20
* 该类实时发送截屏消失,多线程实现,不包含鼠标信息,且没有做对每个Client做优化处理
*/
public class SendScreenImg extends Thread
{
public static int SERVERPORT=8000;
private ServerSocket serverSocket;
private Robot robot;
public Dimension screen;
public Rectangle rect ;
private Socket socket;
public static void main(String args[])
{
new SendScreenImg(SERVERPORT).start();
}
//构造方法 开启套接字连接 机器人robot 获取屏幕大小
public SendScreenImg(int SERVERPORT)
评论0
最新资源