Java TCP-Socket senden byte-array

Ich versuche zu bauen, ein Datei-server mit Java-TCP-sockets. Ich erhalte eine Fehlermeldung, wenn ich versuche, das senden einer Datei über ein paar KB. Die Fehlermeldung lautet wie folgt:

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)

Ich bin erstellen der Ausgabe-stream wie diese:

OutputStream output = clientSocket.getOutputStream()

Und der Fehler stammt aus dieser Linie:
output.write(sendData, 0, sendData.length)

Wo sendData ist ein byte-array, die ich von hand machen, um ein vereinbartes "Protokoll", das ist 28 header-bytes zusammen mit der Datei. Die Datei ist es erroring auf etwa 780 kB, wo eine 2kB-Datei funktioniert perfekt. Irgendwelche Ideen?

EDIT: einigen zusätzlichen Kontext, wie ich den socket.

            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<28; i++){
            sentence[i] = input.readByte();
        }

Und dies ist, wie schicke ich die Daten:
sendData ist das bytearray, das ich gebaut habe zu senden
tArray ist array von bytes von der Datei, die ich bin coping in sendData zu senden

for(int i = 0; i<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();

EDIT 2:
Ich verwendet einen try-catch und habe diesen Fehler jetzt: Software verursacht connection abort: socket write error

InformationsquelleAutor kjkurtz | 2011-05-10
Schreibe einen Kommentar