Speicherzugriffsfehler nach längerem warten?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • hallo,
    ich beschäftige mich seit kurzem mit der netzwerkprogramierung in c++
    leider weis ich nich ob das hier hin gehört oder ins netzwerk topic sry.

    ich habe mir jetz einen kleinen "monitor" geschrieben der es mir ermöglichen soll ohne ständig mit dem putty auf den raspy connecten zu müssen dessen status zu checken

    das funktioniert auch zeitweise
    doch dann stürtzt der client auf dem windows system ab und der server auf dem raspi schreibt speicherzugriffsfehler

    habe ich irgendwo einen pointer falsch gesetzt oder irgendwas übersehen ?

    anbei nochmal das ganze gezipt

    schonmal vielen dank für jeden hin:thumbs1:

    also das hier ist der code vom server :


    und dies ist der code vom client :

    dazu dann noch die

    client_tcp.cpp

    und die
    str_change.cpp

  • Hi,
    mal abgesehen davon, dass das imho doch eher eine eigenwillige Implementierung eines Servers ist, fällt z.B. auf den ersten Blick auf, dass Du einen evtl. Fehler der Funktion accept() ignorierst und trotzdem in die Verarbeitung läufst.

    Code
    client=accept(my.sockID,0,0);
    
    
            while(client)

    cu,
    -ds-

  • vielen dank dreamshader für deine antwort,

    ich spiele halt noch ein bischen rum sind halt die ersten anfänge und ich dachte mir warum das ganze startup nicht auslagern das läuft sowieso fast immer gleich ab


    Hi,
    mal abgesehen davon, dass das imho doch eher eine eigenwillige Implementierung eines Servers ist, fällt z.B. auf den ersten Blick auf, dass Du einen evtl. Fehler der Funktion accept() ignorierst und trotzdem in die Verarbeitung läufst.

    Code
    client=accept(my.sockID,0,0);
    
    
            while(client)

    normalerweise gibt accept bei einem fehler ja ein SOCKET_ERROR zurück und so wie ich gelesen habe ist dies gleich -1 und dies wäre somit ja in der while schleife ein false dh. würde die schleife übersprungen und es würde nach der schleife weiterlaufen

    aber es funktioniert ja so weit ich bekomm halt erst nach mehrmahligem senden der werte einen speicher zugriffs fehler so nach ca 3-4 minuten

    Einmal editiert, zuletzt von tr1g4d0n (12. August 2014 um 17:06)

  • Warum sollte der nicht für den Fehler verantwortlich sein?
    Es sollte ja jetzt kein Hexenwerk darstellen aus dem while(client) ein while(client>0) zu machen, oder?
    Zudem macht der backlog-Parameter bei Dir keinen Sinn ... mehr als eine Verbindung kannst Du doch gar nicht handeln.

    Wenn Du das lernen möchtest, dann empfehle ich Dir dringend, Dich mit den Basics auseinander zu setzen und Dir mal eine Beispiel-Implementierung eines Server-Client Pärchens genauer anzuschauen.
    Du gewöhnst Dir sonst Dinge an, die einfach falsch sind.
    Was Du da zusammengefummelt hast, mag ja für Deine Zwecke so weit erst mal funktionieren, hat aber nichts mit einer Client-Server Anwendung zu tun.
    Ich hoffe, das ist Dir bewusst.
    Zudem macht man niemals eine Annahme über die numerische Repräsentation des Wertes true oder false.
    Das ist einer von vielen grundlegenden Fehlern, die Dir irgendwann mal das Leben schwer machen, wenn Du Dir solchen Unsinn unreflektiert aneignest.

    cu,
    -ds-

  • der liegt denke ich im bereich

    Code
    void status(char *data,char *befehl)
    {
        FILE *fp;
        fp = popen(befehl,"r");
        fgets(data,30,fp);
    }

    der funktion ich hab das grade nochmal lokal probiert und da gings ohne probleme werd das jetz nochmal auf dem raspi probieren und versuchen den fehler zu rekonstruieren

    außerdem ist das ganze wie gesagt halt nur spielerei zum testen und lernen ^^

    Einmal editiert, zuletzt von tr1g4d0n (12. August 2014 um 19:09)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!