title: Java TCP Socket send byte array
body: <p>I'm trying to build a file server using Java TCP sockets. I keep getting an error when I try to send a file over a few KB. The error is as follows:</p>
  
  <pre><code>Exception in thread "main" java.net.SocketException: Connection reset by peer: socket write error
  at java.net.SocketOutputStream.socketWrite0(Native Method)
  at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
  at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
  at fileServer.TCPServer.main(TCPServer.java:193)
  </code></pre>
  
  <p>I am creating the output stream like this:</p>
  
  <pre><code>OutputStream output = clientSocket.getOutputStream()
  </code></pre>
  
  <p>And the error originates from this line:
  <code>output.write(sendData, 0, sendData.length)</code></p>
  
  <p>Where sendData is a byte array I hand make to an agreed upon 'protocol' that is 28 header bytes along with the file. The file it is erroring out on is about 780kB where a 2kB file works perfect. Any ideas?</p>
  
  <p>EDIT: some added context of how I'm making the socket.</p>
  
  <pre><code>            Socket clientSocket = listenSocket.accept();
          System.out.println("server is listening...");
  
          DataInputStream input = new DataInputStream(clientSocket.getInputStream());
          OutputStream output = clientSocket.getOutputStream();
  
  
  
          //receive the request packet
          //int nb = input.readInt();
          System.out.println("Read Length " + "28");
          byte[] sentence = new byte[28];
          for(int i=0; i&lt;28; i++){
              sentence[i] = input.readByte();
          }
  </code></pre>
  
  <p>And this is how I'm sending the data:
  sendData is the bytearray I built to send
  tArray is the array of bytes of the file that I'm coping into sendData to send</p>
  
  <pre><code>for(int i = 0; i&lt;filSize; i++){
     //loads into the packet being built
     //needed to minus 36 since all the header info
     endData[i+36] = tArray[i];
  }
  System.out.println("send packet size: " + sendData.length);
  
  System.out.print(sendData);
  System.out.println("File size is: " + filSize);
  int sendDataLength = sendData.length;
  try{
      output.write(sendData, 0, sendDataLength);
  }catch (IOException e){
      System.out.println("Error: " + e.getMessage());
  }
  clientSocket.close();
  </code></pre>
  
  <p>EDIT 2:
  I used a try catch and got this error now: Software caused connection abort: socket write error</p>