# Connection reset by peer: socket write error



## x46 (5. Dez 2018)

Ich habe bei folgenden den Error:

```
java.net.SocketException: Connection reset by peer: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(Unknown Source)
    at java.net.SocketOutputStream.write(Unknown Source)
    at java.nio.file.Files.copy(Unknown Source)
    at java.nio.file.Files.copy(Unknown Source)
    at x46.Server.Server_in.run(Server_in.java:59)
    at java.lang.Thread.run(Unknown Source)
```
Mein Client (senden der Datei):

```
Socket client = new Socket("localhost", 16102);
        // strems
        // out
        OutputStream outStream = client.getOutputStream();
        PrintWriter out = new PrintWriter(outStream);
 
        // in
        InputStream inStream = client.getInputStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(inStream));
     
        // -------------------------------------------------------
     
        File file = new File("send.zip");
        // init array with file length
        byte[] bytesArray = new byte[(int) file.length()];
          FileInputStream fis = new FileInputStream(file);
          fis.read(bytesArray); //read file into bytes[]
          fis.close();
 
          outStream.write(bytesArray);
          outStream.flush();
       
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
```

Server(empfängt die Datei):

```
try {
            ExecutorService executor = Executors.newFixedThreadPool(2);
            // server starten
            ServerSocket server01 = new ServerSocket(16102);
            System.out.println("Warte auf clients auf dem Port " + server01.getLocalPort());
            // --------------------------------------------------------------
            while (true) {
                // connection aktiviren
                Socket connection = server01.accept();
                System.out.println("Client verbingung unter: " + connection.getRemoteSocketAddress());
                // -------------------------------------------------------------------
                // strems
                // out
                OutputStream outStream = connection.getOutputStream();
                PrintWriter out = new PrintWriter(outStream);
                ObjectOutputStream oos = new ObjectOutputStream(outStream);
                // in
                InputStream inStream = connection.getInputStream();
                BufferedReader in = new BufferedReader(new InputStreamReader(inStream));
                // ------------------------------------------------------------
                // Path path = Paths.get("test.zip");
                File f = new File("test.zip");
                Files.copy(f.toPath(), outStream);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
```
(das Programm ist um eine zip Datei zu verschicken) 
Also woher kommt der Error?


----------



## mihe7 (6. Dez 2018)

Für den Empfang bietet es sich für gewöhnlich an, auch etwas zu lesen...

Du musst serverseitig den inStream auch verwenden. Und die ganzen Writer/Reader-Geschichten schmeißt Du am besten ganz raus: Du verschickst eine Zip-Datei, also binäre Daten und keine Zeichenketten.


----------



## x46 (6. Dez 2018)

aber ich hab ja den Fehler in der Zeile:
`Files.copy(f.toPath(), outStream);`



mihe7 hat gesagt.:


> Für den Empfang bietet es sich für gewöhnlich an, auch etwas zu lesen...


und wie kann ich das machen bz was muss ich dafür machen


----------



## mrBrown (6. Dez 2018)

Wie im anderen Thread gesagt: nimm für den Client auch die Files-Variante, bei mir läuft es damit problemlos.


----------



## x46 (6. Dez 2018)

kannst du mir bitte die bearbeitete stelle schicken ich verstehe nicht wie du das meinst ?


----------



## mrBrown (6. Dez 2018)

Dieses hier: `Files.copy(file.toPath(), outStream)`, statt dem händischem Einlesen und Senden der Datei.


----------



## x46 (6. Dez 2018)

Danke an alle hab es gelöst


----------

