struct über socket jagen



  • Halli Hallo,

    mal ne dumme Frage... (ok es gibt keine dummen Fragen nur dumme Antworten),
    gibt es die Möglichkeit nen struct übers Netzwerk zu nem client zu schicken.

    Bsp.:

    struct PILLEPALLE {
    int i = 1;
    int x = 2;
    }
    
    PILLEPALLE test;
    
    send(sock,test,sizeof(test),0);
    

    also so scheint es schon mal nicht zu gehen...
    hat jemand mal nen tip... (auser google 🙂 )



  • ...keine Ahnung was ich jetzt anders mache, aber jetzt geht es so.



  • send(sock,(char*)[b]&[/b]test,sizeof(test),0);
    

    Allerdings ist es unüblich das so zu machen. Wenn dein Server für eine andere Architektur kompiliert wurde als dein Client, oder einfach mit anderen Einstellungen für Byte Padding kann sowas ganz schnell in die Hose gehen, weil die Grösse der Struktur sich dann auf den beiden Rechnern unterscheidet. In der Regel schickt man die Felder einzeln rüber und baut die struct dann wieder zusammen oder man weist den Compiler an die Struktur zu packen. Siehe http://tangentsoft.net/wskfaq/articles/effective-tcp.html



  • Hi,

    dank dir für den Link ich werd mir das mal anschauen.
    Das mit dem Struktur packen hört sich schon mal interessant an.

    Also auf Linux Seite sieht es so aus:

    send(sock,(void *)meineStruktur,sizeof(meineStruktur));
    

    auf der Windows Seite schauts so:

    recv(sock,(char *)&meineStruktur,sizeof(meineStruktur),0);
    

    Ich hab bis jetzt nur ein paar Tests gemacht, aber es sah so aus als würde es gehen, bin aber kein Experte.

    Wie funktioniert das mit dem packen?
    Auf den Link hab ich mal nen Bookmark gelegt, den werde ich mir Heute Abend mal anschauen.


Anmelden zum Antworten