Socket Befehl senden und antowrt bekommen !

Diskutiere Befehl senden und antowrt bekommen ! im Netzwerkprogrammierung Forum; Tach zusammen, ich stehe nun vor der nächsten herasuforderung und zwar habe ich bereits mit Sockets eine verbindung von PC(Client) zum Raspberry...

  1. Elias177
    Elias177 Neues Mitglied
    Tach zusammen,

    ich stehe nun vor der nächsten herasuforderung und zwar habe ich bereits mit Sockets eine verbindung von PC(Client) zum Raspberry PI 3 B (Server) hergestellt nun möchte ich eine abfrage an den Server senden wie z.b.
    Code ( (Unknown Language)):
    if(!Existiert dieser User schon?) {
         createUser();
    }
    Das soll so sein das der Client etwas an den Server sended wie userExist und der Server daraufhin antwortet ob er existiert oder nicht. Wenn jemand mir Helfen könnte wäre sehr nett.

    MFG
    Elias17

    P.S. Meine Rechtschreibung ist nicht die Beste.

    Client:
    Code (Java):
    package de.elias.viki.manager;

    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;

    public class SocketsClient {

        public static void sendBefehl(String befehl) {
            try {

                final Socket client = new Socket("192.168.178.48", 177);
                System.out.println("<- Client gestartet ->");

                // Streams
                final DataOutputStream out = new DataOutputStream(client.getOutputStream());
                final PrintWriter writer = new PrintWriter(out);

                final DataInputStream in = new DataInputStream(client.getInputStream());
                final BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                // -----------------------------------
               
                writer.write(befehl + "\n");
                writer.flush();
               
                reader.close();
                writer.close();

            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
     
    Server:
    Code (Java):
    package de.elias.viki.manager;

    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;

    public class SocketsServer {

        public static void main(String[] args) {

            ExecutorService executor = Executors.newFixedThreadPool(10);

            try {

                ServerSocket server = new ServerSocket(177);
                System.out.println("<- Server gestartet ->");
                while (true) {
                    try {
                        Socket client = server.accept();

                        executor.execute(new Handler(client));

                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

            } catch (IOException e1) {
                e1.printStackTrace();
            }

        }

    }
     
    Handler:
    Code (Java):
    package de.elias.viki.manager;

    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.util.UUID;

    import de.elias.viki.Methods;
    import de.elias.viki.mysql.Stats;

    public class Handler implements Runnable {

        private Socket client;

        public Handler(Socket client) {
            this.client = client;
        }

        @Override
        public void run() {

            try {
                // Streams
                DataOutputStream out = new DataOutputStream(client.getOutputStream());
                PrintWriter writer = new PrintWriter(out);

                DataInputStream in = new DataInputStream(client.getInputStream());
                BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                // -----------------------------------

                String s = null;

                while ((s = reader.readLine()) != null) {
                    System.out.println(s);
                    if (s.contains("LED")) {
                        Ausgabeleitunge.main(null);
                    }

                    String msg = s;
                    String[] cmdAndArgs = msg.split("\\s+");
                    String cmd = cmdAndArgs[0];
                    if ("mysql".equalsIgnoreCase(cmd)) {
                        String subCmd = cmdAndArgs[1];
                        if ("createUser".equalsIgnoreCase(subCmd)) {
                            String name = cmdAndArgs[2];
                            String pass = cmdAndArgs[3];
                            String uid = String.valueOf(Methods.uuidGenerator());
                            System.out.println("[MySQL] Name: " + name + " Passwort: " + pass + " UID: " + uid);
                            if (!Stats.userExists(name)) {

                                for (int i = 1; i < 6; i++) {
                                    if (!Stats.idExists(i, "VIKI_USER_login")) {
                                        Stats.createUser(i, "NULL", name, pass, uid);
                                    }
                                }

                            }
                        }
                        if("setLogged".equalsIgnoreCase(subCmd)) {
                            String id = cmdAndArgs[2];
                            String uid = cmdAndArgs[3];
                            String name = cmdAndArgs[4];
                            String time = cmdAndArgs[5];
                            System.out.println("[MySQL] SetLogged: ID: " + id + " UID: " + uid + " Name: " + name + " Time:" + time);
                            Stats.setLogged(Integer.valueOf(id), uid, name, time);
                        }
                        if("deleteLogged".equalsIgnoreCase(subCmd)) {
                            int id = Integer.valueOf(cmdAndArgs[2]);
                            String UID = Stats.get("VIKI_INFO_logged", "ID", String.valueOf(id), "UID");
                            String name = Stats.get("VIKI_USER_login", "UID", UID, "Name");
                            System.out.println("[MySQL] DeleteLogged: ID: " + id + " UID: "+ UID + " Name: " + name);
                            Stats.deleteLogged(String.valueOf(id));
                        }
                       
                    }

                }

                writer.close();
                reader.close();

                client.close();

            } catch (Exception e) {
                e.printStackTrace();
            }

        }

    }
     
     
  2. JuKu
    JuKu Aktives Mitglied
    Und wo genau ist jetzt das Problem?

    Du schickst "existsUser" zum Server und dieser antwortet dann mit einem Boolean.
    Sobald du den Befehl geschickt hast, musst du bei Java IO wieder vom Server lesen und erhälst eine Antwort.

    Oder du nutzt statt den einfachen Sockets RMI, das passt besser zu deinem Use Case.
     
Die Seite wird geladen...

Befehl senden und antowrt bekommen ! - Ähnliche Themen

Befehl an bereits extern geöffnete Programm-spezifische Konsole senden
Befehl an bereits extern geöffnete Programm-spezifische Konsole senden im Forum Allgemeine Java-Themen
Dedicated Server \ Senden und Empfangen von Daten/Befehlen
Dedicated Server \ Senden und Empfangen von Daten/Befehlen im Forum Java Basics - Anfänger-Themen
Befehl via HTTP senden ohne Browser öffnen
Befehl via HTTP senden ohne Browser öffnen im Forum Netzwerkprogrammierung
Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen
Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen im Forum Netzwerkprogrammierung
Text/Befehle zu Programmen senden
Text/Befehle zu Programmen senden im Forum Java Basics - Anfänger-Themen
Thema: Befehl senden und antowrt bekommen !