Socket Befehl senden und antowrt bekommen !

Diskutiere Befehl senden und antowrt bekommen ! im Netzwerkprogrammierung Bereich.
E

Elias177

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:
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:
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:
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:
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();
        }

    }

}
 
J

JuKu

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.
 
Thema: 

Befehl senden und antowrt bekommen !

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben