package itu.assignments.fluidphotobrowser; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; 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.Observable; import javax.imageio.ImageIO; public class ConnectionUtil extends Observable implements Runnable { private BufferedImage responseImage; public BufferedImage getResponseImage() { return responseImage; } @Override public void run() { try { Boolean end = false; ServerSocket ss = new ServerSocket(8888); System.out.println("Waiting for Image..."); while(!end) { Socket s = ss.accept(); DataInputStream dataInputStream = new DataInputStream(s.getInputStream()); DataOutputStream dataOutputStream = new DataOutputStream(s.getOutputStream()); System.out.println("Received input from: " +s.getInetAddress()); int imageSize = dataInputStream.readInt(); byte[] buffer = new byte[imageSize]; dataInputStream.readFully(buffer, 0, imageSize); System.out.println("Image size: " + buffer.length + " bytes"); try { final BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(buffer)); this.responseImage = bufferedImage; setChanged(); notifyObservers(); } catch (IOException e) { e.printStackTrace(); } s.close(); } ss.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void sendImage(byte[] buffer) { try { Socket s = new Socket("192.168.1.34",8889); DataOutputStream dataOutputStream = null; DataInputStream dataInputStream = null; dataOutputStream = new DataOutputStream(s.getOutputStream()); dataInputStream = new DataInputStream(s.getInputStream()); dataOutputStream.writeInt(buffer.length); dataOutputStream.write(buffer,0, buffer.length); s.close(); } catch (IOException e) { e.printStackTrace(); } } }