在公司,无聊之际,看到网上关于Robot()类的使用,随想自己实现一个简单的监控系统。这个监控系统没有实现远程的控制操作,只是简单的客户端可以看到远程看到服务器的桌面。另外我在机房局域网测试的时候,发现客户端发现服务器的改变需要5-10秒的时间。不知原因为何?

java 代码
  1. /*
  2. 客户端的实现:主要实现的功能是从服务器得到服务器桌面的图片,并进行显示。
  3. */
  4. import java.awt.*;
  5. import javax.swing.*;
  6. import java.awt.event.*;
  7. import java.util.*;
  8. import java.util.Timer;
  9. import java.io.IOException;
  10. import java.net.*;
  11. public class Client extends JFrame
  12. {
  13. private java.net.Socket cs;
  14. private MyPanel mypanel;
  15. public Client()
  16. {
  17. mypanel=new MyPanel();
  18. this.getContentPane().add(mypanel);
  19. this.clock.start();
  20. this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
  21. }
  22. public static void main(String[] args)
  23. {
  24. Client client = new Client();
  25. client.setSize(800, 800);
  26. client.setVisible(true);
  27. }
  28. private javax.swing.Timer clock=new javax.swing.Timer(1000,new ActionListener() {
  29. public void actionPerformed(ActionEvent e)
  30. {
  31. try
  32. {
  33. cs=new java.net.Socket("192.168.0.3", 12000);
  34. Image image=javax.imageio.ImageIO.read(cs.getInputStream());
  35. mypanel.setImage(image);
  36. mypanel.repaint();
  37. cs.close();
  38. } catch (UnknownHostException e2)
  39. {
  40. e2.printStackTrace();
  41. } catch (IOException e2)
  42. {
  43. e2.printStackTrace();
  44. }
  45. }
  46. });
  47. public void drawImage()
  48. {
  49. }
  50. }
  51. class MyPanel extends JPanel
  52. {
  53. private Image image;
  54. public MyPanel(Image image)
  55. {
  56. this.image=image;
  57. }
  58. public void setImage(Image image)
  59. {
  60. this.image=image;
  61. }
  62. public MyPanel()
  63. {
  64. // TODO 自动生成构造函数存根
  65. }
  66. public void paintComponent(Graphics g)
  67. {
  68. g.drawImage(image, 0, 0, null);
  69. }
  70. }
  71. /***********************************************************************
  72. *************************************************************************/
  73. /*
  74. 服务器端的实现:
  75. 主要实现采集服务器的桌面,并多线程实现给客户端的发送
  76. */
  77. import java.io.IOException;
  78. import java.net.ServerSocket;
  79. import java.net.Socket;
  80. public class Server
  81. {
  82. private final static int PORT = 12000;
  83. public static void main(String[] args)
  84. {
  85. try
  86. {
  87. ServerSocket server = new ServerSocket(PORT);
  88. Socket connection = null;
  89. while (true)
  90. {
  91. try
  92. {
  93. new ShotThread(server).start();
  94. } finally
  95. {
  96. try
  97. {
  98. if (connection != null)
  99. connection.close();
  100. } catch (IOException e)
  101. {
  102. }
  103. }
  104. }
  105. } catch (IOException ee)
  106. {
  107. System.err.println(ee);
  108. }
  109. } // end main
  110. }
  111. /**
  112. * 多线程的连接:
  113. *
  114. */
  115. class ShotThread extends Thread
  116. {
  117. ServerSocket server;
  118. public ShotThread(ServerSocket server)
  119. {
  120. try
  121. {
  122. this.connection = server.accept();
  123. } catch (IOException e)
  124. {
  125. e.printStackTrace();
  126. }
  127. }
  128. public void run()
  129. {
  130. System.out.println("得到连接:");
  131. // try
  132. // {
  133. //    // this.sleep(500);
  134. // } catch (InterruptedException e2)
  135. // {
  136. //     //
  137. //     e2.printStackTrace();
  138. // }
  139. java.awt.image.BufferedImage image = (new ShotImage()).snapShot();
  140. if (image == null)
  141. try
  142. {
  143. throw new IOException();
  144. } catch (IOException e1)
  145. {
  146. // TODO 自动生成 catch 块
  147. e1.printStackTrace();
  148. }
  149. try
  150. {
  151. javax.imageio.ImageIO.write(image, "jpg", connection
  152. .getOutputStream());
  153. connection.close();
  154. } catch (IOException e)
  155. {
  156. e.printStackTrace();
  157. }
  158. }
  159. Socket connection = null;
  160. }
  161. /************************************************************************
  162. *************************************************************************/
  163. /*
  164. 图片采集的代码
  165. */
  166. import java.awt.Dimension;
  167. import java.awt.Rectangle;
  168. import java.awt.Robot;
  169. import java.awt.Toolkit;
  170. import java.awt.image.BufferedImage;
  171. public class ShotImage
  172. {
  173. private Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
  174. private String imageFormat = "jpg";
  175. private int Num = 0;
  176. BufferedImage screenshot;
  177. public synchronized  BufferedImage snapShot()
  178. {
  179. try
  180. {
  181. screenshot = (new Robot()).createScreenCapture(new Rectangle(0, 0,
  182. (int) dimension.getWidth(), (int) dimension.getHeight()));
  183. } catch (Exception ex)
  184. {
  185. System.out.println(ex);
  186. }
  187. return screenshot;
  188. }
  189. }

JAVA的远程控制系统(远程监控)实现相关推荐

  1. java毕业设计——基于java+Socket+sqlserver的远程监控系统软件设计与实现(毕业论文+程序源码)——远程监控系统

    基于java+Socket+sqlserver的远程监控系统软件设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Socket+sqlserver的远程监控系统软件设计与实现,文章 ...

  2. 慧锦GPRS/CDMA模块在远程控制系统中的应用

    慧锦GPRS/CDMA模块在远程控制系统中的应用 (应用领域:水处理/环保) 摘要:随着WEB技术和GPRS技术的不断发展和推广,GPRS的应用逐渐成为监控领域的一个研究热点.本文以支持TCP/IP协 ...

  3. 简要分析Hacking Team 远程控制系统

    绿盟科技 · 2015/07/09 22:37 0x00 前言 7月5日晚,一家意大利远程控制软件厂商HackingTeam的内部数据被泄露出来,其影响力不亚于斯洛登事件及维基解密事件,绿盟科技威胁响 ...

  4. 计算机网络控制系统,计算机网络远程控制系统的应用研究(原稿)

    <计算机网络远程控制系统的应用研究(原稿).doc>由会员分享,可免费在线阅读全文,更多与<计算机网络远程控制系统的应用研究(原稿)>相关文档资源请在帮帮文库(www.woc8 ...

  5. 组态王 6.55 启停plc_永宏PLC在远程控制系统中的应用

    一.行业介绍 本远程控制系统是给石药集团的下属子公司设计的一个控制方案.主要是配套GPRS-DTU产品实现远程plc与plc之间的数据共享.从而达到远程无线数据写入控制和读取监控的目的. 二.客户需求 ...

  6. java计算机毕业设计医院远程诊断系统源代码+系统+数据库+lw文档

    java计算机毕业设计医院远程诊断系统源代码+系统+数据库+lw文档 java计算机毕业设计医院远程诊断系统源代码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  7. 基于Android智能终端的远程控制系统

    摘  要: 提出了基于Android 手机的远程控制系统设计方案,该系统基于Openmobster开源手机云计算平台.介绍了整个系统结构框架,详细分析了各个模块的具体实现.通过应用实例在设备上进行了测 ...

  8. 手机控制远程linux,远程控制系统如何控制智能家居的?

    原标题:远程控制系统如何控制智能家居的? 智能家居现今越来越多人感觉兴趣,并在家里安装了智能家居,而智能家居中的远程控制系统主要的作用的是什么,可以控制哪些智能家居呢? 智能家居远程控制系统理论上是用 ...

  9. 慧教室系统--远程控制系统

    随着科技的不断进步,越来越多的教育机构开始使用智慧教室系统来提升教学效果和学生体验.智慧教室系统不仅可以自动化管理设备,还可以实现远程控制,帮助教师和学生更加便捷地使用教室设备.智慧教室系统作为一款领 ...

  10. plc设备远程控制系统

    采用工业互联网与大数据分析技术,实时监控异地设备运行状态,为设备提供定制化的响应式服务,包括设备的智能分析诊断.预测性维护.节能管理.空中升级和远程作业指导等,减少因设备意外停车引起的生产停滞,提高设 ...

最新文章

  1. 大规模数据库的性能改善方法之一 数据分割
  2. 您的凭依不工作/登录没有成功
  3. 修改wamp默认网站目录
  4. ELK错误1_Kafka-Logstash-Elasticsearch过程,Elasticsearch报grokparsefailure错误
  5. 在阿里云上进行Docker应用的自动弹性伸缩
  6. 王道考研 计算机网络9 物理层传输介质 双绞线 同轴电缆 光纤
  7. 洛谷 P2689 东南西北【模拟/搜索】
  8. Redis之Pipeline(管道)
  9. python3携程多任务_python3之携程yield及greenlet
  10. ansys linux运行_如何在linux系统下启动workbench。谢谢啦。 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  11. 【Git可视化工具】Sourcetree的初始化与使用
  12. android 半透明色值_Android应用中设置alpha值来制作透明与渐变效果的实例
  13. 基金投资理财专栏介绍
  14. 也谈360软件是否可靠
  15. 重力传感器、加速度传感器以及陀螺仪的区别
  16. 一文了解互联网运营核心指标(产品、运营人员必知)
  17. iOS视频播放全屏效果实现
  18. 黄峥为拼多多拼了五年多
  19. Spring简化Java开发_java开发如何用spring简化?详细图解
  20. 」张顺在灯影下张时 水浒传

热门文章

  1. windows检查磁盘命令
  2. 海信85U7G-PRO怎么样 有什么优缺点
  3. 2019年9月全国计算机公共基础题库【速刷版】
  4. 微信公众号开发-使用微信网页授权进行登录并加上过滤器判断是否已登录
  5. 极客”一词,来自于美国俚语“geek”的音译,一般理解为性格古怪的人
  6. 华为防火墙L2TP/L2TP over IPSec
  7. 求多个数最大公约数、最小公倍数的一种变换算法
  8. 威斯康星大学-机器学习导论2020
  9. JS 对数组对象进行排序
  10. Linux下怎么进入波浪线目录,linux 波浪线 ~ 使用方法