WSAStartup wird nicht ausgeführt, WSAGetLastError 10093

  • Hallo nochmal
    immernoch mit embedded Visual C++ SP4 versuche ich gerade einen Hostnamen aufzulösen. Per ping-Befehl in der Konsole konnte der Hostname aufgelöst werden, aber wenn ich den Debugger starte wird mir rc==0 ausgegeben, aber WSAGetLastError liefert 10093, was so viel heist wie WSAStartup() wurde nich ausgeführt, war fehlerhaft, etwas an der Netzwerkkonfiguration ist falsch, oder WSACleanup() wurde zu oft ausgeführt. Ich habe eher bedenken dass es bei mir ein Versionsproblem ist.


    Das kuriose ist eben, dass ich bei dem device die winsock.h und nicht winsock2.h nutze. Wenn ich die Winsock2.h inkludiere kommen 20 fehler und 19 Warnungen (sollte Bedarf bestehen kann ich diese sogar posten). Nun habe ich schon verschiedene Versionen des WinSock probiert (MAKEWORD(1,0 ... 1.1 ... 2.0 .... 2.2. In der Hilfe zu WSAStartup wird auf 2.2 eingegangen, allerdings inkludieren die in dem Codebeispiel die winsock2.h. Diese ist auch vorhanden, die ws2.lib habe ich gelinkt, aber wie gesagt, nutze ich die winsock2.h gibt es massig Fehler.
    Weis zufällig jemand Rat? Im Internet habe ich leider nix brauchbares gefunden (google, msdn)
    Gruß Basti


    //edit:
    Dieses kleine Progrämmchen läuft ohne Probleme:


    UNd das sind aber die Fehler, wenn ich die winsock2.h und WinSock Version 2.2 nutze:

  • Kann es sein, dass es einfach an der Reihenfolge der Includes liegt? Oder an einem anderen Include, das selbst schon winsock.h einbindet und wenn dann noch zusätzlich winsock2.h eingebunden wird, kommt es zu den Mehrfachdefinitionen, die beanstandet werden? Was zum Beispiel bindet stdafx.h alles ein?


    Mit freundlichen Grüßen,


    H. Keller

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • okay, nun kann ich es immerhin compilieren, aber die stdafx.h läd eine datei namens afxsock.h nach
    Ich habe jetzt anstatt der afxsock.h in die stdafx.h winsock2.h eingetragen und copiled. Beim debuggen ist nun die HOSTENT Struktur nicht mehr leer (he), sondern der debugger zeigt mir nun den rechnernamen mit Domäne an, das will ich aber nicht, ich will die IP :(
    also he->h_name ist jetzt 0x00032ee4 "RO-EDV-264.wdi-dsw.local"
    Dass er mir nicht die richtige IP ausgibt ist klar, sondern nur diesen Netzwerknummer-style. Aber is das jetzt in der Hex-Zahl drinnne, oder hat der den Namen jetzt nur so aufgelöst, dasser weis aha, in der Domäne is der drinne???
    Gruß und vielen Dank für die tolle Hilfe bisher :)