⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 conductor.java

📁 原创
💻 JAVA
字号:
package serviceServer;

import java.awt.image.BufferedImage;
import java.awt.image.DataBuffer;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
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;

import com.sun.image.codec.jpeg.JPEGCodec;

import clientServer.Common;

public class Conductor extends Thread {
	private UserInterface mUif;
	private ServerSocket serverSocket = null;
	private Socket mSocket = null;
	private BufferedInputStream bin;
	private BufferedImage mDesktop, mTemp;
	private DataBuffer mDbd, mDbt;
	private boolean first = true;
	private int mLength, k, temp;
	private DataInputStream din;

	public Conductor() {
		mUif = UserInterface.getInstance();

		try {
			serverSocket = new ServerSocket(Common.sIPort);
		} catch (IOException e) {
			System.err.println("Could not listen on port for imageReceiver.");
			System.exit(-1);
		}

	}

	public void run() {
		try {
			mSocket = serverSocket.accept();
			bin = new BufferedInputStream(mSocket.getInputStream());
			din = new DataInputStream(bin);
		} catch (IOException e) {
			e.printStackTrace();
		}

		while (Common.sContinue) {
			// 接收
			try {
				int length = din.readInt();// 图像数据的长度
				byte[] image = new byte[length];
				din.readFully(image);
				ByteArrayInputStream bimage = new ByteArrayInputStream(image);
				mTemp = ImageIO.read(bimage);
				bimage.close();
				
				FileOutputStream file = new FileOutputStream("c:\\out.jpg");
				ZipOutputStream out = new ZipOutputStream(file);
				out.putNextEntry(new ZipEntry("Example.java"));
				out.setLevel(9);
				JPEGCodec.createJPEGEncoder(out).encode(mTemp);//图像编码成JPEG
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}

			// 初始化
			if (first) {
				Common.sScreenWidth = mTemp.getWidth();
				Common.sScreenHeight = mTemp.getHeight();
				mLength = Common.sScreenHeight * Common.sScreenWidth;

				mDesktop = new BufferedImage(Common.sScreenWidth,
						Common.sScreenHeight, BufferedImage.TYPE_3BYTE_BGR);

				Common.sInit = false;
				first = false;
			}

			// 更新
			k = 0;
			mDbd = mDesktop.getRaster().getDataBuffer();
			mDbt = mTemp.getData().getDataBuffer();
			while (k < mLength) {
				temp = mDbt.getElem(k);

				if (temp != 0) {
					mDbd.setElem(k, temp);
				}

				k++;
			}

			// 显示
			mUif.renderImage(mDesktop);
		}

		if (mSocket != null)
			try {
				mSocket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -