`

Socket与ServerSocket远程桌面

    博客分类:
  • Java
 
阅读更多

目的:通过socket与socketserver的通信实现远程监控

 

首先,在serversocket(被监控端)一直截屏发送到socket。

再到socket(客户端)中不断接收截屏内容并展示出来。

 

代码如下:

服务器:

public class RemoteServer {

	private static Socket st;

	public static void main(String[] args) {
		ServerSocket server;
		try {
			server = new ServerSocket(1234);
			st = server.accept();
			System.out.println("已连接");
			// 新开两个线程,一个发送截屏,一个接收鼠标键盘并进行模拟操作
			new SendThread(st).start();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


class SendThread extends Thread {
	Robot robot;
	ObjectOutputStream os;
	BufferedOutputStream bos;
	ImageOutputStream ios;
	Rectangle rect;
	private boolean isAlive = true;
	Socket st;

	public SendThread(Socket st) {
		this.st = st;
		try {

			robot = new Robot();
			Point p = new Point(0, 0);
			// 获得屏幕大小
			Toolkit tool = Toolkit.getDefaultToolkit();
			Dimension dis = tool.getScreenSize();
			rect = new Rectangle(p, dis);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void run() {
		try {
			os = new ObjectOutputStream(st.getOutputStream());
			BufferedImage img = null;
			while (isAlive) {
				// 根据矩形rect大小进行截屏,得到BUfferedImage对象
				img = robot.createScreenCapture(rect);
				// BUfferedImage没有序列化,先包装成ImageIcon再写出去
				ImageIcon icon = new ImageIcon(img);
				os.writeObject(icon);
				os.flush();
				Thread.sleep(1000);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

客户端:

重写重绘的方法。

public class RemoteClient extends JFrame {

	private JPanel contentPane;
	Socket socket;
	ObjectInputStream ins;
	boolean isAlive = true;
	private ImageIcon icon;

	public static void main(String[] args) {
		Socket socket = null;
		try {
			socket = new Socket("127.0.0.1", 1234);
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		new RemoteClient(socket);
	}

	/**
	 * Create the frame.
	 */
	public RemoteClient(Socket socket) {
		this.socket = socket;
		try {
			ins = new ObjectInputStream(socket.getInputStream());
		} catch (IOException e) {
			e.printStackTrace();
		}
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(0, 0, 1200, 700);
		contentPane = new MyPanel();

		JScrollPane jsp = new JScrollPane(contentPane);
		jsp.setAutoscrolls(true);
		add(jsp);
		setVisible(true);
		new Receive().start();
	}

	/**
	 * 接收服务器的图片
	 * 
	 * @author Huangbin
	 * @date 2014年7月31日
	 */
	class Receive extends Thread {

		public void run() {
			try {
				while (isAlive) {
					System.out.println("开始读");
					icon = (ImageIcon) ins.readObject();
					System.out.println(icon);
					System.out.println("读完了");
					// 根据图片大小定义contentPane大小。
					contentPane.setSize(icon.getIconWidth(),
							icon.getIconHeight());
					contentPane.repaint();
					Thread.sleep(1000);
				}
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
	}

	class MyPanel extends JPanel {
		public void paint(Graphics g) {
			super.paint(g);
			g.drawImage(icon.getImage(), 0, 0, contentPane);
		}
	}

}

 

1
1
分享到:
评论

相关推荐

    远程桌面监控简易源码.rar

    《简易远程桌面监控系统——基于Socket编程》 在IT领域,远程桌面监控是常见的系统管理工具,它允许管理员从远程位置访问和控制其他计算机。本篇文章将深入探讨一个基于Socket编程的简易远程桌面监控源码,该源码...

    java远程桌面控制系统

    2. **图像编码与解码**:远程桌面控制需要实时传输屏幕图像数据,这通常涉及到图像的压缩和解压缩。常见的编码格式有JPEG、PNG等,它们能有效降低图像的存储和传输成本。 3. **键盘鼠标事件处理**:客户端发送键盘...

    通过java socket实现屏幕网络监控

    在这个场景中,我们讨论的是如何使用Java Socket来实现实时的屏幕监控功能,即服务端能够远程查看客户端的屏幕内容,这样的功能在远程协助、监控或者演示场景中非常有用。 首先,我们需要了解Java Socket的基本概念...

    Java远程桌面控制

    Java远程桌面控制是一种技术,允许用户通过网络连接到另一台计算机并进行实时的屏幕查看、键盘输入和鼠标操作。在Java中实现这种功能通常涉及到网络编程、多线程以及图形用户界面(GUI)的设计。本篇文章将深入探讨...

    Android应用源码安卓与PC的Socket通信项目android版

    本项目专注于Android设备与PC之间的Socket通信实现,这对于构建远程控制、数据同步或实时交互的应用非常有用。以下将详细讲解Socket通信的核心概念以及如何在Android平台上实现。 1. Socket基础: Socket是网络...

    基于Java的实例源码-远程桌面 Java Remote Desktop.zip

    3. **图像处理与流传输**:在远程桌面应用中,服务器需要捕获并发送当前屏幕的图像给客户端。这涉及到Java的图像处理API(如BufferedImage)和流传输(如InputStream和OutputStream)的知识,以高效地压缩和解压图像...

    远程桌面控制j(ava程序)

    远程桌面控制技术是一种允许用户通过网络访问和控制另一台计算机的软件工具,它极大地扩展了工作和协作的可能性。在这个特定的场景中,我们讨论的是一个用Java编程语言实现的远程桌面控制程序——...

    基于java的远程桌面 Java Remote Desktop.zip

    3. **图像处理与编码**: 远程桌面需要实时传输屏幕内容,这就涉及到图像的捕获、压缩和解码。Java提供了多种图像处理API,如`java.awt.image.BufferedImage`,可以用来捕获屏幕并进行压缩,然后通过网络传输到另一端...

    JAVA实现屏幕抓图 远程桌面控制

    ### JAVA实现屏幕抓图与远程桌面控制 #### 一、Java屏幕抓图技术解析 在Java中,要实现屏幕抓图的功能,主要依赖于`java.awt.Robot`类。该类提供了一系列方法来模拟键盘和鼠标操作,并允许开发人员捕获整个屏幕或...

    远程桌面 Java Remote Desktop源码示例

    客户端(即远程桌面的控制端)则需要创建一个`Socket`对象,并指定服务器的IP地址和端口号,通过`connect()`方法尝试连接到服务器。连接成功后,客户端和服务器端就可以通过输入/输出流进行数据交换了。 远程桌面的...

    基于JavaFx的Socket多线程通讯程序实例(含:Server端和Client端)

    Socket是网络通信中的一个端点,它允许两个远程系统通过网络交换数据。在Java中,Socket类代表客户端,ServerSocket类代表服务器端。当Client创建一个Socket实例连接到Server的特定端口时,服务器端会使用...

    java socket编程

    - 远程控制:如远程桌面、命令执行等。 - 即时通讯:聊天应用、游戏同步等。 - Web服务器:处理HTTP请求,提供网页服务。 总的来说,Java Socket编程是网络应用程序开发的基础,理解和掌握Socket编程对构建...

    Python与Java间Socket通信实例代码

    Python与Java间Socket...在实际应用中,Socket 通信机制广泛应用于各种网络应用程序,例如聊天软件、文件传输协议、远程桌面控制等。在开发中,我们需要了解 Socket 的原理和实现机制,以便更好地应用于实际项目中。

    Socket编程Socket编程

    Socket编程广泛应用于各种网络服务,如HTTP、FTP、SMTP等协议的实现,以及聊天应用、游戏、远程桌面等。例如,Web服务器通过Socket与浏览器进行交互,实现HTTP请求和响应的传递。 七、异常处理 在Socket编程中,...

    基于Java的源码-Java Socket通信实现.zip

    Socket编程是Java网络编程的基础,广泛应用于服务器与客户端之间的交互,如在线聊天、文件传输、远程登录等应用场景。本压缩包包含的是使用Java语言实现Socket通信的源代码示例。 Java Socket库提供了一种在TCP/IP...

    C#客户端和服务器 Socket 之间的通信(asp.net )

    C#是一种广泛用于构建桌面和Web应用程序的编程语言,其内置的Socket类提供了强大的网络通信功能。本篇将深入探讨如何使用C#的Socket进行客户端和服务器间的通信,以及在ASP.NET环境下的应用。 首先,Socket在计算机...

    java源码:java Socket通信实现.rar

    - 远程控制:如SSH、VNC等远程桌面协议都是基于Socket实现的。 - 即时通讯:聊天室、邮件系统等实时通信应用。 7. **优化与安全** - 为提高性能,可以使用缓冲区(BufferedInputStream/BufferedOutputStream)...

    SocketClient.zip

    6. **实际应用**:Socket通信广泛应用于各种场景,如聊天软件、文件传输、远程桌面等。结合加密和黑白名单机制,可以构建安全的网络服务,例如银行系统、在线支付平台等,它们需要保证数据传输的安全性和仅允许授权...

    java远程控制

    Java远程控制技术主要涉及到网络通信和对象交互,其中Socket是核心工具。Socket在计算机网络中扮演着客户端和服务端的角色,允许两个程序通过网络进行通信。在这个场景中,我们使用Socket来实现在远程主机上执行本地...

    java-SWT-socket.zip_SWT_SWT socket

    通过这个项目,开发者可以学习到如何将Java的网络编程能力与SWT的GUI功能相结合,创建出既有美观界面又能实现实时通信的桌面应用。这种技能在开发实时监控、远程控制或者聊天应用等领域非常实用。同时,这也是一个很...

Global site tag (gtag.js) - Google Analytics