title: Sending image over Socket
body: <p>i have a small problem sending image over Socket(client-server), i receive only "UTF" text but not the image object, is there something wrong with code?,</p>
  
  <p>This code just sends the UTF txt and it's received on server side, i'm using the UTF text to identify an image(name) on server side and after identified it can send the image Object to client</p>
  
  <pre><code>    /*
       * ServerSide
       * 
       */
      package Interface_class;
  
      import configuraciones.procesador;
      import java.awt.image.BufferedImage;
      import java.io.DataInputStream;
      import java.io.DataOutputStream;
      import java.io.File;
      import java.io.IOException;
      import java.net.ServerSocket;
      import java.net.Socket;
      import java.net.SocketTimeoutException;
      import javax.imageio.ImageIO;
  
      /**
       *
       * @author TheCoder
       */
      public class img_monitor extends Thread{
              ServerSocket serverSocket;
             Socket server;
             BufferedImage bimg;
              byte[] bytes;
             public img_monitor() 
             {
                 try{
  //Opening server socket
                serverSocket = new ServerSocket(6066);
                System.out.println("Conectado al Socket!");
      }
                 catch(IOException ex){
                     System.out.println("Error en: "+ex);
  
                }
             }
  
             public void run()
             {
  //This class gets the path from a property file (works well)
              procesador obj = new procesador();
              obj.UBARCHIVO_CONFIG();
  
                 while(true)
                {
                     try
                     {
  
                        server = serverSocket.accept();
                        System.out.println("Nuevo cliente conectado!");
                        DataInputStream din=new DataInputStream(server.getInputStream());
                        DataOutputStream dout=new DataOutputStream(server.getOutputStream());                 
      //Receiving image "name" from client as txt
                        String nombre = din.readUTF();
                        System.out.println(nombre);
  //Using path+name of image to identify and send over socket
                        bimg = ImageIO.read(new File(obj.getRuta_arch_img()+nombre));
                        System.out.println(obj.getRuta_arch_img()+nombre);
                        ImageIO.write(bimg,"JPG",dout);
                        System.out.println("Image sent!!!");
      //                  server.close();
  
                        //lblimg.setIcon(img);
                    }
                   catch(IOException e)
                   {
                        e.printStackTrace();
                        break;
                   }
                   catch(Exception ex)
                  {
                        System.out.println(ex);
                  }
                }
             }
  
      }
  </code></pre>
  
  <p>Client Side</p>
  
  <pre><code>    /*
       * Client Side 
       * 
       */
      package Interface_class;
  
      import java.awt.image.BufferedImage;
      import java.io.DataInputStream;
      import java.io.DataOutputStream;
      import java.io.IOException;
      import java.net.ServerSocket;
      import java.net.Socket;
      import java.net.SocketTimeoutException;
      import javax.imageio.ImageIO;
  
      /**
       *
       * @author TheCoder
       */
      public class Obtener_imagen extends Thread {
  
          public Obtener_imagen() {
              System.out.println("Loading  Socket!");
  
          }
  
          public void run() {
  //The class below gets info from database
              CLIENTINFO_CLASS obj = new CLIENTINFO_CLASS();
              obj.consulta();
              try {
                  Socket socket = new Socket("localhost", 6066);
      //              DataInputStream din = new DataInputStream(socket.getInputStream());
                  DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
                 //Using this to send image "name" to server, so it can identify and send image to client
   dout.writeUTF(obj.getImg_name());
                  BufferedImage img = ImageIO.read(ImageIO.createImageInputStream(socket.getInputStream()));
                  System.out.println("Image received!!!!");
      //                socket.close();
              } catch (IOException ex) {
                  System.out.println("Error al abrir el socket" + ex);
              }
          }
      }
  </code></pre>