title: Stream video to a server
body: <p>I'm trying to stream video to a server from  another machine using Java and for starters, I'm just trying to transfer a file using a raw socket connection and a byte stream.  However, things aren't showing up the same way.  If I transfer a file this way, a 3MB file on my machine ends up being 5MB on the server.  I'm trying this with a video file and the resultant file actually "plays" when I download it and is the correct length but there's no image.  Code is below:</p>
  
  <p>Client (streamer):</p>
  
  <pre><code>public static void main(String[] args){
      Socket sock = null;
  
      try{
          System.out.println("Connecting...");
          sock = new Socket("server.com", 8080);
          InputStream is = new FileInputStream(new File("Bear.wmv"));
          byte[] bytes = new byte[1024];
  
          OutputStream stream = sock.getOutputStream();
  
          int count = is.read(bytes, 0, 1024);
          while (count != -1){
              stream.write(bytes, 0, 1024);
              count = is.read(bytes, 0, 1024);
          }
  
          is.close();
          stream.close();
          sock.close();
  
      }catch (Exception e){
          e.printStackTrace();
      }
  }
  </code></pre>
  
  <p>Server (receiver):</p>
  
  <pre><code>public static void main(String[] args){
      ServerSocket sock = null;
      try {
          sock = new ServerSocket(8080);
      } catch (IOException e) {
          System.out.println("Could not instantiate socket:");
          e.printStackTrace();
          return;
      }
  
      Socket clientSock = null;
      while(true){
  
          try{
  
              System.out.println("Waiting for connection...");
              clientSock = sock.accept();
              final Socket fin = clientSock;
              System.out.println("Connection accepted");
              System.out.println("Spawning thread...");
              Thread trd = new Thread(new Runnable(){
                  public void run(){
                      try {
                          try {
                              Thread.sleep(5000);
                          } catch (InterruptedException e) {
                              e.printStackTrace();
                          }
  
                          System.out.println("Receiving video...");
                          File video = new File("test.wmv");
                          FileOutputStream fos = new FileOutputStream(video);
                          byte[] data = new byte[1024];
                          int count = fin.getInputStream().read(data, 0, 1024);
                          while (count != -1){
                              fos.write(data, 0, 1024);
                              count = fin.getInputStream().read(data, 0, 1024);
                          }
                          fos.close();
                          fin.close();
                          System.out.println("Done receiving");
                      } catch (IOException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }}
              });
              trd.start();
  
          }catch(IOException e){
              System.out.println("Could not accept");
              e.printStackTrace();
          }
  
  
      }
  
  
  
  }
  </code></pre>
  
  <p>Any thoughts?  Thanks in advance!</p>
  
  <p>Chris</p>