unverstandenes code snippet



  • ich verstehe folgende zeilen nicht:

    WSADATA info;
    if (WSAStartup(MAKEWORD(1,1), &info) != 0)

    zuerst wird die Struktur (?) WSDATA unter dem Namen info erzeugt ?

    dann die If abfrage - warum ein Komma, warum der aufruf von info, warum eine Klammer, die nicht geöffnet wurde ?

    ich verstehe den code folgender maßen:

    WSDATA info; // funktion deklarieren
    if (WSAStartup(MAKEWORD(1,1), &info) != 0)

    // wenn WSA Startup ausgeführt wurde,
    //ohne das ein Fehler Returned wurde, dann
    //weiter im code - right ?

    bitte erklärt mir die Syntax doch noch - auch wenns der code schon richtig interpretiert wurde, das wäre nett.

    Thanx,

    Ole



  • Du hast da wohl etwas verdreht 🙂

    WSADATA info;
    /*variable vom Type WSADATA mit Namen info anlegen*/
    
    if (WSAStartup(MAKEWORD(1,1), &info) != 0)
    /*
    WSAStartup mit den Parametern MAKEWORD(1,1) und &info aufrufen.
    Danach pruefen ob WSAStartup einen Wert ungleich 0 zurueck gegeben hat*/
    

    WSADATA ist eine Struktur.

    WSAStartup() initialisiert Winsock fuer dein Programm (damit du sockets verwenden kannst)

    MAKEWORD() macht aus zwei kleinen variablen 1 grosse (genaueres ist unwichtig -> damit sagst du WSAStartup welche Winsock Version du haben willst, in diesem Fall 1.1)
    &info ist die Adresse von info, es wird also ein zeiger auf unsere struktur uebergeben (WSAStartup schreibt jetzt mehr oder weniger wichtige Informationen in diese Struktur rein, die habe ich aber noch nie gebraucht :))

    halbwegs klarer?

    Naja, nur zur vervollstaendigung: das ist keine C Frage, sondern Windows (Winsock) spezifisch. Aber ich lass dich trotzdem erstmal hier - aber merk dir das bitte fuer spaeter 🙂



  • ok, dankeschön.

    MAKEWORD() macht aus zwei kleinen variablen 1 grosse (genaueres ist unwichtig -> damit sagst du WSAStartup welche Winsock Version du haben willst, in diesem Fall 1.1)

    Was MAKEWORD tut, weiß ich aber trotzdem - das Poste ich hier jetzt auch mal, damit wenn jemand nach etwas sucht, das ganze Komplettiert bekommt 🙂

    Da Die unterschiedlichen Prozessorachitekturen unterschiedliche Assembler benutzen ensteht der Sachverhalt, das bei einem WORD Byte (2 Byte aneinader gehängt, eines der Bytes ist das höher wertige)z.B. auf einem 68xxx System das erste Byte das höher wertige ist, auf einem 80x686 aber das letztere Byte das höher wertige ist.

    MAKEWORD wird demnach wohl dafür sorgen, das man auch mit einem System über ein Socket Kommunizieren kann, welches das erste byte anders interpretiert, als das Gegenüberliegende System.

    [ Dieser Beitrag wurde am 09.10.2002 um 04:12 Uhr von Backtickz editiert. ]


Anmelden zum Antworten