-1
朋友! 我想在PC上獲得遠程PC屏幕!我試圖用UDP編寫,現在我想寫成TCP協議,但有一些問題!如果有人能告訴我是什麼,我會感謝這個問題......這裏是我的代碼: Server.java如何通過java中的TCP socket發送圖像
public Server(int port){
this.G_PORT = port;
}
void sendMessage() throws IOException, AWTException{
servSocket = new ServerSocket(G_PORT);
System.out.println("Waiting...");
cSocket = servSocket.accept();
System.out.println("Server has connected to " + cSocket.getRemoteSocketAddress() + " on " + cSocket.getPort() +" port");
BufferedOutputStream buffOS = new BufferedOutputStream(cSocket.getOutputStream());
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle r = new Rectangle(d);
KeyStroke keyStr = KeyStroke.getKeyStroke("ESCAPE");
FileInputStream fileIN = null;
OutputStream out = null;
//while(keyStr.getKeyCode() != 27){
bot = new Robot();
buffIMG = bot.createScreenCapture(r);
ImageIO.write(buffIMG, "jpeg", new File("D:\\ScreenShots\\test.jpeg"));
fileIN = new FileInputStream(new File("D:\\ScreenShots\\test.jpeg"));
out = cSocket.getOutputStream();
int read, readTotal = 0;
byteToIMG = new byte[BUFF_SIZE];
while((read = fileIN.read())!= -1){
out.write(byteToIMG,0,read);
System.out.println("IMG sended");
}
//}
out.close();
fileIN.close();
cSocket.close();
}
和Client.java
void recievMessage(long starTime) throws UnknownHostException, IOException{
cSocket = new Socket(InetAddress.getByName(G_HOST), G_PORT);
System.out.println("Connected");
JFrame frame = new JFrame("My frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JLabel label = new JLabel();
ImageIcon icon;
InputStream in = cSocket.getInputStream();
byteToIMG = new byte[BYTE_SIZE];
int read;
int readTotal = 0;
while((read = in.read(byteToIMG)) != -1){
readTotal += read;
InputStream imgIN = new ByteArrayInputStream(byteToIMG);
buffIMG = ImageIO.read(imgIN);
icon = new ImageIcon();
icon.setImage(buffIMG);
label.setIcon(icon);
frame.getContentPane().add(label, BorderLayout.CENTER);
frame.pack();
System.out.println("IMG recieved");
}
}
請幫助解決這個問題!如果你有另一個解決方案建議!謝謝!