-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathServer.java
88 lines (77 loc) · 3.05 KB
/
Server.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package com.company;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.zip.DataFormatException;
public class Server extends JFrame {
private ServerSocket server = null;
private ObjectInputStream in = null;
public JFrame frame = null;
private int port = 1000;
public static void main(String[]args) {
Server show = new Server();
show.StartStream();
}
public Server(){
try {
server = new ServerSocket(port);
InetAddress ip = InetAddress.getLocalHost();
System.out.println("Host Name: " + ip.getHostName());
System.out.println("Waiting for client on port " +
server.getLocalPort() + "...");
Socket ser = server.accept();
System.out.println("Just connected to " + ser.getRemoteSocketAddress());
in = new ObjectInputStream(ser.getInputStream());
} catch (IOException E){
System.out.println(E);
}
}
public void StartStream(){
// final Rectangle screenRect = new Rectangle(2256,1504);
Rectangle screenRect = new Rectangle(100, 100);
CreateJframe(screenRect);
Image a = new BufferedImage(1,1,1);
Icon c = new ImageIcon(a);
JLabel b = new JLabel(c);
frame.getContentPane().add(b);
KeyboardServer keyServer = new KeyboardServer(port);
frame.addKeyListener(keyServer.listener);
keyServer.start();
MouseKeyServer mouse = new MouseKeyServer(port);
frame.addMouseListener(mouse.getClick());
frame.addMouseWheelListener(mouse.getScroll());
while(true){
if(screenRect.width != frame.getWidth() || screenRect.height != frame.getHeight()){
screenRect = new Rectangle((int) (0.95*frame.getWidth()), (int) (0.95*frame.getHeight()));
}
try {
((ImageIcon) c).setImage(ImageResizer.resize(createImageFromBytes(CompressionUtils.decompress((byte[])in.readObject())), screenRect.width , screenRect.height));
b.setIcon(c);
} catch (IOException | ClassNotFoundException | DataFormatException E){
System.out.println(E);
}
frame.repaint();
}
}
public void CreateJframe(Rectangle screenRect) {
frame = new JFrame();
frame.setSize(1000, 1000);
frame.getContentPane().setLayout(new FlowLayout());
frame.setVisible(true);
}
private BufferedImage createImageFromBytes(byte[] imageData) {
ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
try {
return ImageIO.read(bais);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}