UDP Client_Server



  • Hallo allerseits,

    ich habe mich gerade hier registriert, weil ich etwas Hilfe brauche.
    Ich bin ein Hobby Programmierer und bin vor kurzen auf C++ umgestiegen. Ich möchte ein kompaktes Programm zur Steuerung meines Raspberry Pi's schreiben und dazu habe ich ein Beispiel bzw. eine Header Datei mit einer cpp Datei im Internet gefunden => https://linux.m2osw.com/c-implementation-udp-clientserver

    Ich programmiere mit Code Blocks und habe die Header Datei und die cpp schon mal in das Projekt eingebunden. Das initialisieren des Servers habe ich auch schon hinbekommen

    udp_client_server::udp_server("127.0.0.1", 9010);
    

    Hoffe ich jedenfalls 😅

    aber das recv, bzw. das auslesen der eingehenden Nachrichten bekomme ich nicht hin. habe schon alles mögliche ausprobiert.

    Der Code aus der Datei:

    int udp_server::recv(char *msg, size_t max_size)
    {
        return ::recv(f_socket, msg, max_size, 0);
    }
    

    Ich versuche es mit, oder über eine while Schleife laufen zu lassen. Vielleicht könnte mir jemand mal ein Tipp geben, oder ein Beispiel wie man das machen könnte.

    Danke schon mal im voraus.



  • @UnixX710 sagte in UDP Client_Server:

    bekomme ich nicht hin

    Was heißt das?



  • Bei diesem Beispiel im Internet handelt es sich um eine Namespace Variante der Header und der cpp Datei. Ich habe als Anfänger Probleme das ganze überhaupt zum laufen zu bringen. Ich möchte gerne wissen wie ich den Server initialisieren kann und wie ich die Funktion bzw. den int recv anwenden muss, damit ich was empfangen kann-



  • @UnixX710 sagte in UDP Client_Server:

    um eine Namespace Variante der Header und der cpp Datei

    Ja und?

    Ich schätze mal, ungefähr so:

    udp_client_server::udp_server s("127.0.0.1", 9010);
    std::array<char,1024> buffer;
    int received = s.recv(buffer.data(), buffer.size() );
    if( received  > 0 ) {
        std::cout << "Das erste Zeichen ist: " << buffer[0] << "\n";
    } 
    


  • Danke dir für deine Antwort.
    Code Blocks meckert nicht über den code, aber in der Konsole herrscht gähnende Leere, obwohl ich auf die IP Adresse und den richtigen Port des Rechners mit einer Handy App Nachrichten sende. 🤷♂



  • Verwendet die Handy-App wirklich UDP und nicht TCP/IP?



  • @UnixX710
    Ich müsste auch erst nachschlagen, aber 127.0.0.1 hört vermutlich nicht nach draußen. Da wird eher der Hostname oder 0.0.0.0 (für IPV4) helfen.

    Die Firewall ist aus/geöffnet?



  • zitat: "Anstatt der Funktionen read() und write() verwendet man mit UDP-Sockets das Funktionenpaar recvfrom() und sendto() zum Nachrichtenaustausch." (Zahn: Unix-Netzwerkprogrammierung mit Threads, Sockets und SSL, 2006 Springer-Verlag Berlin Heidelberg, S. 206)

    alle klarheiten beseitigt?


Log in to reply