title: Socket-transferred file: contents are empty
body: <p>I am working on transferring a file between two computers over a socket. Everything seems to work, but when I look at the contents of the retrieved file, it is empty. What am I doing wrong?</p>
  
  <p>Here is my server-side code. The file foobar.txt exists, and its contents are "hello world!".</p>
  
  <pre><code>try{ 
      ServerSocket ssock = new ServerSocket(12345);
      Socket sock = ssock.accept();
      //here I get the filename from the client, but that works fine.
      File myFile = new File("foobar.txt");
      byte[] mybytearray = new byte[(int) myFile.length()];
      BufferedInputStream bis = new BufferedInputStream(new FileInputStream(myFile));
      bis.read(mybytearray, 0, mybytearray.length);
      OutputStream os = sock.getOutputStream();
      os.write(mybytearray, 0, mybytearray.length);
      os.flush();
      sock.close();
  } catch (Exception e){
      e.printStackTrace();
  }
  </code></pre>
  
  <p>And here is my client code:</p>
  
  <pre><code>try {
      Socket socket = new Socket(host, port);
      PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
      out.print("get foobar.txt\r\n");
      out.flush();
      byte[] streamIn = new byte[1024];
      InputStream in = socket.getInputStream();
      FileOutputStream file_src = new FileOutputStream("foobar.txt"); 
      BufferedOutputStream file_writer = new BufferedOutputStream(file_src);
      int i;
      while ((i = in.read()) != -1) {
          file_writer.write(i);
      }
      file_writer.flush();
      file_writer.close();
      file_src.close();
      socket.close();
  } catch (Exception e) {
     e.printStackTrace();
  }
  </code></pre>
  
  <p><strong>Solved</strong></p>
  
  <p>Since I am using multiple threads and multiple sockets and testing all connections on one machine, I was simply running into a problem where the client (which has both the client and server code in it) would connect with itself instead of the other client. Changing the file transfer port for the different running clients got this all to work. Thanks for everyone who had a look at this and gave me some suggestions.</p>