CPU
Lieutenant
- Registriert
- Jan. 2006
- Beiträge
- 704
Hallo zusammen,
folgendes: ich habe einen Client und einen Server. Der Client macht ein Screenshot und sendet den an den Server. Doch mit jetzigen Variante:
dautert das aber über 5 Sekunden! Da das ein Streaming werden, wobei sekündlich ein Screenshot geschossen werden soll ist das ein bisschen schlecht!!!
Habt Ihr da Optimierungsmöglichkeiten Parat? (unten der Quellcode vom Server)
Außerdem fände ich es hilfreich, nicht erst das BufferedImage in eine Datei auf der Festplatte zu schreiben, sondern direkt zu versenden... wie geht das??
Danke schon mal vorab,
CPU
folgendes: ich habe einen Client und einen Server. Der Client macht ein Screenshot und sendet den an den Server. Doch mit jetzigen Variante:
Code:
Socket socket = null;
try {
socket = new Socket("localhost", 41001);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
OutputStream ss = null;
System.out.println("GOING TO SEND: " + System.nanoTime());
try {
BufferedImage bi = new Robot().createScreenCapture(
new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) );
ImageIO.write( bi, "jpg", new File("c:/screenshot.jpg") );
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File file = new File("c:/screenshot.jpg");
try {
DataOutputStream dos = new DataOutputStream(socket
.getOutputStream());
FileInputStream fis = new FileInputStream(file);
int i = 0;
while ((i = fis.read()) != -1)
dos.write(i);
dos.flush();
dos.close();
fis.close();
} catch (Exception e1) {
e1.printStackTrace();
}
Habt Ihr da Optimierungsmöglichkeiten Parat? (unten der Quellcode vom Server)
Außerdem fände ich es hilfreich, nicht erst das BufferedImage in eine Datei auf der Festplatte zu schreiben, sondern direkt zu versenden... wie geht das??
Danke schon mal vorab,
CPU
Code:
try {
ServerSocket serverSocket = new ServerSocket(41001);
while (true) {
Socket socket = serverSocket.accept();
System.out.println("HERE: " + System.nanoTime());
try {
File f=new File("C:\\test.png");
InputStream inputStream= socket.getInputStream();
OutputStream out=new FileOutputStream(f);
byte buf[]=new byte[1024];
int len;
while((len=inputStream.read(buf))>0)
out.write(buf,0,len);
out.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("OKAY: " + System.nanoTime());
}
} catch (IOException e) {
e.printStackTrace();
}