📄 conductor.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 + -