So I was implementing client and socket for java. I wanted to send huge files on tcp through sockets and I was able to send files too but the only problem was the files on the other end were either not complete or not working. I have checked the bits are being transfered then what is the error. 

**Client side:**

```html
   Socket sock = new Socket("127.0.0.1", 1056);
    byte[] mybytearray = new byte[1024];
    InputStream is = sock.getInputStream();
    FileOutputStream fos = new FileOutputStream("abc.mp3");
    BufferedOutputStream bos = new BufferedOutputStream(fos);
    int bytesRead = is.read(mybytearray, 0, mybytearray.length);
    int len = 0;
    while((len = is.read(mybytearray)) != -1)
    {
    bos.write(mybytearray, 0, len);
    System.out.println("sending");
    }

    bos.close();
    sock.close();
```

**Server side:**

```html
  ServerSocket ss = new ServerSocket(1056);
    while (true) {
      Socket s = ss.accept();
      PrintStream out = new PrintStream(s.getOutputStream());
      BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
      String info = null;
      String request = null;
      System.out.println("sending");      
       String filename = "abc.mp3";
        File fi = new File(filename);
        InputStream fs = new FileInputStream(fi);
        int n = fs.available();
        byte buf[] = new byte[1024];
        out.println("Content_Length:" + n);
        out.println("");
        while ((n = fs.read(buf)) >= 0) {
          out.write(buf, 0, n);
             System.out.println("sending");
        }
        out.close();
        s.close();
        in.close();

  }
```