Winsock connect Funktion und Windows 7 Pro 64 Bit



  • Hallo,
    ich programmiere im moment ein kleines Remote Admin Tool in der Firma funktionierte alles super ( OS: Win XP Pro ) jetzt wollte ich zuhause da noch etwas dran machen aber es funktionierte nicht mehr richtig ...

    Gut dachte ich hab ich vielleicht die falsche Datei mitnachhause genommen.

    Da ich keine lust hatte mein Code nochmal durchzuschauen habe ich einfach einen Code aus einem Tutorial genommen [Ich weiss das der Code aus dem Tut funktioniert^^].

    Selber Fehler ...

    Bei der connect Funktion bleibt das Programm einfach stehen. -.-
    Es wird nicht mal ein Fehler ausgeben.

    rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
      if(rc==SOCKET_ERROR)
      {
        printf("Fehler: connect gescheitert, fehler code: %d\n",WSAGetLastError());
        return 1;
      }
    

    Wenn connect keinen Server zum verbinden findet dann wird mir bei Windows XP innerhalb weniger Sekunden eine Fehlermeldung ausgeben.

    [ Firewall habe ich zum test auch mal ausgeschaltet aber selbes Ergebniss ]

    Weiss hier vielleicht jemand ob connect auf Windows 7 nicht so gut läuft ?

    (Auf Window 7 32Bit könnte ich es sonst nachher mal testen.)

    #include <windows.h>
    #include <winsock2.h>
    #include <stdio.h>
    
    //Prototypen
    int startWinsock(void);
    
    int main()
    {
      long rc;
      SOCKET s;
      SOCKADDR_IN addr;
      char buf[256];
    
      // Winsock starten
      rc=startWinsock();
      if(rc!=0)
      {
        printf("Fehler: startWinsock, fehler code: %d\n",rc);
        return 1;
      }
      else
      {
        printf("Winsock gestartet!\n");
      }
    
      // Socket erstellen
      s=socket(AF_INET,SOCK_STREAM,0);
      if(s==INVALID_SOCKET)
      {
        printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError());
        return 1;
      }
      else
      {
        printf("Socket erstellt!\n");
      }
    
      // Verbinden
      memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten
      addr.sin_family=AF_INET;
      addr.sin_port=htons(12345); // wir verwenden mal port 12345
      addr.sin_addr.s_addr=inet_addr("127.0.0.1"); // zielrechner ist unser eigener
    
      rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
      if(rc==SOCKET_ERROR)
      {
        printf("Fehler: connect gescheitert, fehler code: %d\n",WSAGetLastError());
        return 1;
      }
      else
      {
        printf("Verbunden mit 127.0.0.1..\n");
      }
    
      // Daten austauschen
      while(rc!=SOCKET_ERROR)
      {
        printf("\nZeichenfolge eingeben [max 256]: ");
        gets(buf);
        send(s,buf,strlen(buf),0);
        rc=recv(s,buf,256,0);
        if(rc==0)
        {
          printf("Server hat die Verbindung getrennt..\n");
          break;
        }
        if(rc==SOCKET_ERROR)
        {
          printf("Fehler: recv, fehler code: %d\n",WSAGetLastError());
          break;
        }
        buf[rc]='\0';
        printf("\nServer antwortet: %s\n",buf);
      }
      closesocket(s);
      WSACleanup();
      return 0;
    }
    
    int startWinsock(void)
    {
      WSADATA wsa;
      return WSAStartup(MAKEWORD(2,0),&wsa);
    }
    


  • Kannst Du Dich mal genauer ausdrücken?
    WAS ist mit "connect"? Kommt es _nie_ zurück oder erst nach 2 Minuten? Was ist dann der Fehlercode?



  • Hat sich schon erledigt meine Firewall war schuld ...

    connect hat mir irgendwie keinen Fehler zurück geben es war als hätte sich das Programm aufgehangen zumal es sich auch nicht beenden ließ.

    [Erst nach mehrmaligem wütenden klicken auf Prozess Beenden im Task Manager ]


Log in to reply