package Server;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.concurrent.TimeUnit;
import java.util.zip.ZipInputStream;
import javax.imageio.ImageIO;
import javax.swing.*;
public class ReceiveImg extends JFrame implements Runnable {
JLabel jlabel;
Socket socket;
ZipInputStream zip;
DataOutputStream out;
BufferedImage img;
Image image;
DataInputStream dis;
DataOutputStream dos;
JScrollPane scroll;
String ip;
public static boolean boo;
ReceiveImg(String s,String stuID,String name) {
//super("远程监控");
setTitle("远程监控--学号:"+stuID+"--姓名:"+name);
boo=true;
ip=s;
scroll = new JScrollPane(null,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
// setResizable(false);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(100, 75, (int)screenSize.getWidth()-200, (int)screenSize.getHeight()-150 );
jlabel = new JLabel();
// jlabel.setForeground( Color.GREEN );
jlabel.setOpaque(true);
jlabel.setSize(600, 550);
// jlabel.setBackground( Color.red);
this.setAlwaysOnTop( true);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
boo=false;
ReceiveImg.this.dispose();
}
});
add(scroll);
setVisible(true);
validate();
}
public static void main(String args[]) {
new Thread(new ReceiveImg("127.0.0.1","123","***")).start();
}
public void run() {
while (boo) {
try {
// System.out.println("屏幕监控:" + clientIP + "\n" + port);
socket = new Socket(ip, 30011);
dis = new DataInputStream(socket.getInputStream());
dos = new DataOutputStream(socket.getOutputStream());
ZipInputStream zis = new ZipInputStream(dis);
try {
zis.getNextEntry();// 读取下一个 ZIP 文件条目并将流定位到该条目数据的开始处
image = ImageIO.read(zis);// 把ZIP流转换为图片
} catch (IOException ioe) {
// ioe.printStackTrace();
}
// this.setImage(image);
// this.repaint();
jlabel.setIcon(new ImageIcon(image));
scroll.setViewportView(jlabel);
ReceiveImg.this.validate();
dis.close();
dos.close();
socket.close();
try {
TimeUnit.MILLISECONDS.sleep(500);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
// System.out.println("conntinue");
} catch (IOException ioe) {
// ioe.printStackTrace();
}
}
/*
* while(true){
*
* try {
*
* out=new DataOutputStream(socket.getOutputStream() );
* System.out.println("111111111111111111111"); zip=new
* ZipInputStream(socket.getInputStream() );
* System.out.println("2222222222222222222222"); zip.getNextEntry() ;
* System.out.println("3333333333333333333333333"); img=ImageIO.read(
* zip); System.out.println("0000000000000000000000");
* image=img.getScaledInstance(400,300,BufferedImage.SCALE_SMOOTH);
* System.out.println("444444444444444444444444444"); jlabel.setIcon(
* new ImageIcon(image));
* System.out.println("5555555555555555555555555555555");
* } catch (IOException e) { // TODO 自动生成 catch 块 e.printStackTrace(); }
*
*
* try { Thread.sleep( 500); } catch (InterruptedException e) { // TODO
* 自动生成 catch 块 e.printStackTrace(); }
*
* }
*/
}
}
评论7
最新资源