Problem mit Server Programm



  • Habe folgenden Code im Internet gefunden:

    #include <winsock2.h> 
    #include <windows.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main (int argc, char* argv[]) { 
      WSADATA wdData; 
      int T=1;
      if (WSAStartup(MAKEWORD(2, 0), &wdData) == INVALID_SOCKET) { 
        printf ("Konnte Winsock nicht initialiesiren\n"); 
        system ("PAUSE"); 
        return 256;                    
      } else { 
       printf ("Winsock initialisiert\n");
      } 
    
      SOCKET sckSocket; 
      SOCKADDR_IN addrServer; 
      char Request[100]; 
    
      /* SOCKADDR_IN erstellen und Port setzen, auf dem er hört. */ 
      addrServer.sin_addr.s_addr = INADDR_ANY; // listen on all IPs associated with this computer 
      addrServer.sin_port = htons(5110); // bind to port 80 
      addrServer.sin_family = AF_INET; 
      manager();
      if ((sckSocket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { 
       printf ("Konnte kein Socket erstellen\n");
        system ("PAUSE"); 
        return 256; 
      } else { 
        printf ("Socket erstell\n");
      } 
    
      if (bind(sckSocket, (SOCKADDR *) &addrServer, sizeof(addrServer)) == SOCKET_ERROR) { 
        printf ("Konnte nich an Port binden\n");
        system ("PAUSE"); 
        return 254; 
      } else { 
       printf ("An Port gebunden\n");    
      } 
    
      if (listen(sckSocket, 4) == SOCKET_ERROR) { 
        printf ("Socket kann nicht hören\n");
        system ("PAUSE"); 
        return 253; 
      } else { 
        printf ("Socket hört\n");       
      } 
    
      while (T) { 
        /* Zum Ausgrenzen um die Anzahl und schnelligkeit der Durchläufe zu sehen */ 
    
        SOCKET sckClient = accept(sckSocket, 0, 0); 
        if (sckClient != INVALID_SOCKET) { 
          /* Nur 1 Strich und kein 'hier müsste was kommen' Also bleibts bei Accept stehen. */ 
          printf ("Hier müsste was kommen\n"); 
    
          if (recv(sckClient, Request, sizeof(Request), 0) > 0) { 
            printf ("%s\n",Request);
          if (Request == "CMD")
          printf ("Es geht\n");       
          } 
        } 
      } 
    
      closesocket (sckSocket); 
      system ("PAUSE"); 
      return 0; 
    }
    

    Es wird jetzt aba nur Angezeigt was gesendet wurde wenn die Verbindung getrennt wurde.
    Und ich will das wenn CMD gesendet wird das des dann ausgeben wird auf dem Bildschrim leider geht dies alles nicht.
    Hoffe jemand kann mir weiter helfen...



  • if (sckClient != INVALID_SOCKET) { 
    
            /* Nur 1 Strich und kein 'hier müsste was kommen' Also bleibts bei Accept stehen. */ 
            printf ("Hier müsste was kommen\n"); 
    
            if (recv(sckClient, Request, sizeof(Request), 0) > 0) { 
                printf ("%s\n",Request);
            if (Request == "CMD")
                printf ("Es geht\n");       
        } else { 
          /* 
           * Hier mittels ::WSAGetLastError() und ggf ::FormatMessage(..)
           * Fehler behandeln !
           */ 
        }
    

    Eine Testausschrift an der Stelle wäre bestimmt aufschlussreich.

    Grüsse

    Gast++



  • const char* str="CMD";
    if(req==str)
    {//...
    

    so wird das nicht funktionieren. man kann char arrays nicht so einfach miteinander vergleichen wie std::strings. du musst dafür eine funktion wie z.b. strncmp() verwenden.

    http://www.cppreference.com/stdstring/strncmp.html


Anmelden zum Antworten