Zum Inhalt springen

Socket-Server beendet sich selbst?


Empfohlene Beiträge

Geschrieben

Hi,

ich möchte einen Socket-Server sowie einen dazugehörigen Client programmieren. In der Anfangsphase (um damit vertraut zu werden), möchte ich lediglich nur, dass der ich etwas vom Client abschicke (einen String) und der Server mir das zurück gibt, was ich geschrieben habe! Klingt äußerst simpel, aber jeder fängt mal klein an ;-)

Mein Problem ist jetzt aber, dass wenn ich vom Client etwas abschicke und der Client sich quasi beendet, beendet sich auch automatisch der Server mit dem Grund: socket closed !

Hier der Code vom Server:


import java.io.*;

import java.net.*;


public class Server {


    private String authinfo = "pmbs";

    ServerSocket Master = new ServerSocket(9999);


    private void send(Socket socket, Object tmp) throws IOException {

        BufferedWriter wr;

        wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

        wr.write(tmp.toString());

        wr.flush();

        wr.close();

    }


    Server() throws IOException {

        while (true) {

            Socket Client = Master.accept();


            BufferedReader rd = new BufferedReader(new InputStreamReader(Client.getInputStream()));


            String str;

            while ((str = rd.readLine()) != null) {


                String[] args = str.split(" ");

                String command = args[0];

                String auth = args[1];


                if (auth.equals(authinfo)) {


                    if (command.equals("reply")) {

                        String tmp = "";

                        for (int i = 2; i < args.length; i++) {

                            tmp = tmp + " " + args[i];

                        }

                        send(Client, tmp);

                    }


                }

            }


            rd.close();


            Client.close();


        }

    }


    public static void main(String[] args) {

        try {

            Server server = new Server();

        } catch (IOException ex) {

            System.out.println(ex.getMessage());

        }

    }

}

..und vom Client:

import java.net.*;

import java.io.*;


public class Client {


    Client() throws IOException {

        Socket Master = new Socket("localhost", 9999);


        BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(Master.getOutputStream()));

        wr.write("reply pmbs check check yoaar\n");

        wr.flush();


        BufferedReader rd = new BufferedReader(new InputStreamReader(Master.getInputStream()));

        String str;

        while ((str = rd.readLine()) != null) {

            System.out.println(str);

        }

        rd.close();

        wr.close();

    }


    public static void main(String[] args) {

        try {

            Client client = new Client();

        } catch (Exception ex) {

            System.out.println(ex.getMessage());

        }

    }

}

Ich hoffe ihr könnt mir ein wenig auf die Sprünge helfen... Danke!

Gruß,

Jan

Geschrieben (bearbeitet)

Mein Problem ist jetzt aber, dass wenn ich vom Client etwas abschicke und der Client sich quasi beendet, beendet sich auch automatisch der Server mit dem Grund: socket closed !

Was erwartest du?

  1. Der Client führt seine Aktion aus und beendet sich, die Verbindung zum Server wird geschlossen.
  2. Der Server erwartet dann aber noch Daten, ergo: Eine unbehandelte IOException wird geworfen und der Server beendet sich.

Ansonsten, fürs aussagekräftigere Server debuggen:


public static void main(String[] args) {

    try {

        Server server = new Server();

    } catch (Exception e) {

        e.printStackTrace();

    }

}

Gruß

Bearbeitet von kein-tee

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...