Client-Socket unter Windows starten



  • hi zusammen,

    nachdem ich sehr einfach linux einen server und client gebaut habe die mit sockets arbeiten wollte ich nun unter windows ( XP-Pro ) das gleiche machen.
    Da beisse ich mir aber schon bei starten des sockets die zähne aus.

    also ich verwende DevC++ und habe das folgende einfache Progrämmchen.

    #include <windows.h>
    #include <winsock.h>
    #include <stdio.h>
    
    //Prototypen
    int startWinsock(void);
    
    int main()
    {
      long rc;
    
      rc=startWinsock();
    
      if(rc!=0)
      {
        printf("Fehler: startWinsock, fehler code: %d\n",rc);
    
        return 1;
      }
      else
      {
        printf("Winsock gestartet!\n");
      }
    
      return 0;
    }
    
    int startWinsock(void)
    {
      WSADATA wsa;
      return WSAStartup(MAKEWORD(1,1),&wsa);
    }
    

    Bei den Parametern hab ich für den Linker noch: C:/lcc/lib/wsock32.lib eingebunden.
    Das Programm wird auch erstellt, aber beim ausführen bekomme ich immer einen fehler:
    "Die Anwendung konnte nicht richtig initialisiert werden (0xc0000005). Klicken Sie 'Ok' ....bla bla .."

    kann mir da einer nen tip geben, ich steh auf dem Schlauch...

    Vielen Dank schonmal

    cu
    uwi



  • Kann da gerade keinen Fehler finden, mal mit Visual Studio (2010) und

    - <Winsock2.h>
    - #pragma comment (lib, "Ws2_32.lib")
    - statt MAKEWORD(1,1) WINSOCK_VERSION

    getestet?

    Warum nutzt man eigentlich DevC++?



  • hi,

    danke erstmal.
    ich bin bei devc++ weil mit visual studio mit seinem debugger immer in alle programme reingrätscht die nicht ganz sauber sind. gerne wird da auch mal der firefox gestoppt und gesagt das der nicht weiter ausgeführt werden darf...

    aber es müsste ja in jedem programm klappen wenn alles richtig eingestellt ist.

    WINSOCK_VERSION ist bei mir nicht bekannt, wo wird die deklariert/definiert.
    ich denke nämlich das das der übeltäter ist...

    danke
    uwi



  • uwi2k2 schrieb:

    gerne wird da auch mal der firefox gestoppt und gesagt das der nicht weiter ausgeführt werden darf...

    WTF? Ich glaube, da hast du was falsch verstanden. Da kommt höchstens mal eine andere Meldung, aber abgestürzt wäre der Fuchs an der Stelle eh.

    uwi2k2 schrieb:

    aber es müsste ja in jedem programm klappen wenn alles richtig eingestellt ist.

    Schon, aber so könnte man eventuell den Übeltäter weiter eingrenzen 😃

    uwi2k2 schrieb:

    WINSOCK_VERSION ist bei mir nicht bekannt, wo wird die deklariert/definiert.
    ich denke nämlich das das der übeltäter ist...

    WINSOCK_VERSION wird in der <winsock2.h> definiert und ist eigentlich nur ein Makro für MAKEWORD. Sollte also beides klappen, ich finde WINSOCK_VERSION nur schöner.



  • hi,

    also nur zum abschluss.
    ich habs mal eben auf einer anderen maschiene mit vs 2005 erstellt und dann läuft es auch wie es soll.

    danke für die hilfe.

    cu
    uwi



  • #include <winsock2.h>

    WSAStartup(MAKEWORD(2,2), &iws);

    Und linken musst Du -> ws2_32.lib



  • uwi2k2 schrieb:

    hi,
    devc++

    1. Hast Du nen Müll? Dann schmeiss dies "devc++" gleich rein.

    ich bin bei devc++ weil mit visual studio mit seinem debugger immer in alle programme reingrätscht die nicht ganz sauber sind. gerne wird da auch mal der firefox gestoppt und gesagt das der nicht weiter ausgeführt werden darf...

    2. Wie bitte? Da hast Du ganz sicher was falsch verstanden!
    3. Wäre dies http://www.c-worker.ch/tuts/wstut_op.php sicher ein Anfang für Dich. (Alles) schön ausführlich beschriben.


Anmelden zum Antworten