Es connectet nicht :(



  • Hi,

    ich habe ein Problem, ich mach ein Tool was die aktuelle IP Adressen zu dyndns.org schickt & aktualisiert.

    Und habe das Steuerungsmodul als Windows Application und das Programm was connectet und sendet ist auf Windows Konsolen Basis...

    Es soll erstmal connecten...

    Code von der Konsolenanwendung:

    /****************************************
     *                                      *
     * Console of the IP Controlls          *
     * with WinSock2.0                      *
     * by Rene Polifka                      *
     *                                      *
     ****************************************/
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    // Win32 API Headerdateien
    
    #include <winsock2.h>
    #include <windows.h>
    #pragma comment( lib, "ws2_32.lib" )
    
    // Sockets ::Internet
    //
    //////////////////////////
    
    #define WM_SOCKET_NOTIFY (WM_USER + 1)
    
    #define COUNT_ELEMENTS(num) (sizeof((num))/sizeof((num)[0])) // Für das Auslesen der IP
    
    int umwandlung(char *eingabe);
    
    void ip_transmitter(void);
    
    int main(int argc, char *argv[]) 
    {
    
    // Speicherstruktur
    
    struct data_com 
    {
    
    char servername[30];
    char host[50];
    char benutzername[50];
    int password;
    
    };
    
    // Connect Speicherstruktur
    
    struct connect_server 
    {
    
    int id;
    char servername[100];
    char host[100];
    char benutzerip[100];
    char benutzername[50];
    int password;
    
    };
    
    struct connect_server gfsend[100];
    
    struct data_com ysend;
    
    // Variable
    
    char password_c[50];
    int count = 0;
    int count_2 = 0;
    
    printf("\n  ****************************************************************************\n");
    printf("  * IP Server Tool v1.0 - Console -                                          *  ");
    printf("  * Diese Konsole steuert alle Ablaeufe des Programms, irgendein eine Fehl-  *  ");
    printf("  * info kann zur einer Fehlverbindung bei der IP uebermittlung hervorrufen! *  ");
    printf("  ****************************************************************************  \n\n\n");
    
    if (strcmp("-data",argv[1]))
    {
    //
    } else {
    
    // Daten ändern
    
    FILE *data_source;
    
    if (data_source = fopen("data_source.dat", "w"))
    {
    
    printf("\n\n >> Die Daten werdem bei \'\x084ndern\' immer neu aufgesetzt!\n\n");
    
    printf("  Servername: ");
    scanf("%s", &ysend.servername);
    
    printf("\n  Host: ");
    scanf("%s", &ysend.host);
    
    printf("\n  Benutzername: ");
    scanf("%s", &ysend.benutzername);
    
    printf("\n  Password: ");
    scanf("%s", &password_c);
    
    ysend.password = umwandlung(password_c); 
    
    printf("\n\n  Servername == %s", ysend.servername);
    printf("\n  Host == %s\n\n", ysend.host);
    printf("\n  Benutzername == %s", ysend.benutzername);
    printf("\n  Password == %i\n\n", ysend.password);
    
    printf("  >> speichere");
    
    fprintf(data_source, "1 %s ", ysend.servername);
    fprintf(data_source, "%s ", ysend.host);
    fprintf(data_source, "%s ", ysend.benutzername);
    fprintf(data_source, "%i ", ysend.password);
    
    printf("\n\n  :: fertig!\n\n");
    
    getchar();
    
    } else {
    
    printf("\n\n  @Error: File can not create has!\n");
    
    }
    
    fclose(data_source);
    
    }
    
    if (strcmp("-start",argv[1]))
    {
    //
    } else {
    
    // IP Übermittlung | die letzte Hirde!
    
    printf("\n\n  >> Bereite die Daten vor [CONNECT]!\n\n");
    printf("  :: IP holen....\n");
    printf("   :- Liste......\n\n"); 
    
    ip_transmitter();
    
    printf("\n  >> Sammel Infos und speichere Sie in die Struktur");
    
    FILE *data_source_s;
    
    data_source_s = fopen("data_source.dat", "r");
    
    if (data_source_s) 
    {
    
    while (!feof(data_source_s)) 
    { 
    
    fscanf(data_source_s,"%i %s %s %s %i", &gfsend[count].id, &gfsend[count].servername, &gfsend[count].host, &gfsend[count].benutzername, &gfsend[count].password); 
    
    count++; 
    } 
    
    printf("\n\n  :: Kontrollliste\n\n");
    
    printf("  ID: %i\n", gfsend[0].id);
    printf("  Servername: %s\n", gfsend[0].servername);
    printf("  Host: %s\n", gfsend[0].host);
    printf("  Benutzername: %s\n", gfsend[0].benutzername);
    printf("  Password: %i\n\n", gfsend[0].password);
    
    printf("  :: IP holen\n");
    
    FILE * hole_ip;
    
    hole_ip = fopen("ip_data.txt", "r");
    
    if (hole_ip) 
    {
    
    while (!feof(hole_ip)) 
    { 
    
    fscanf(hole_ip,"%s.%s.%s.%s", &gfsend[count_2].benutzerip); 
    
    count_2++; 
    } 
    
    printf("\n\n  IP: %s\n\n",  gfsend[0].benutzerip);
    
    printf("\n\n  >> Versuche die erste Verbindung mit %s herzustellen\n\n", gfsend[0].host);
    
    WSADATA WSAData;
    int iError;
    
    if (iError = WSAStartup (MAKEWORD(2,0), &WSAData))
    {
    printf("  :: WinSock 2.0 Error #%i: konnte nicht gestartet werden!\n\n", iError);
    return TRUE ;
    }
    
    /// Socket öffnen
    
    SOCKET sock;
    
    sock = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP) ;
    
    if (sock == INVALID_SOCKET)
    {
    printf("  :: Socket Error: Socket #%i konnte nicht geoeffnet werden!", WSAGetLastError ());
    WSACleanup () ;
    }
    
    if (SOCKET_ERROR == WSAAsyncSelect (sock,NULL,WM_SOCKET_NOTIFY, FD_CONNECT | FD_READ))
    {
    printf("\n\n  :: WSAAsyncSelect - Fehler: #%i\n\n", WSAGetLastError ());
    closesocket (sock) ;
    WSACleanup () ;
    }
    
    // Sockets Data
    
    struct sockaddr_in hostSvr;
    
    hostSvr.sin_family = AF_INET;
    hostSvr.sin_port = htons(80);
    hostSvr.sin_addr.S_un.S_addr  = inet_addr("216.239.37.99");
    
    connect(sock, (sockaddr *) &hostSvr, sizeof (hostSvr)) ;
    
    ///////////////////////////
    
    if (WSAEWOULDBLOCK != (iError = WSAGetLastError ()))
    {
    printf("  :: Error Connect: Connect-Fehler #%i.\n\n",iError);
    closesocket (sock) ;
    WSACleanup () ;
    }
    
    getchar();
    
    /////////////////////////////////////////////
    
    } else {
    
    printf("@ERROR: not found!");
    
    }
    
    fclose(hole_ip);
    
    ////////////////////////////////////////////
    
    } else {
    printf("\n@ERROR: not found\n\n");
    }
    
    fclose(data_source_s);
    
    }
    
    getchar();
    
    return 0;
    }
    
    int umwandlung(char *eingabe)
    {
    
    int x;
    
    x = atoi(eingabe);
    
    return x;
    }
    
    void ip_transmitter(void) 
    {
    
    struct hostent* hostentIP;
    WSADATA wsadata; 
    UCHAR ucAddresses[4];         // Variable für unsere Adressen.
    char szHostName[MAX_PATH]; 
    int iIPSchleife;   
    
    FILE *ip_file;
    
    ip_file = fopen("ip_data.txt", "w");
    
    // WSAStartup()... Wie jedes mal bei den Sockets...
    WSAStartup(MAKEWORD(2, 0), &wsadata); 
    if(SOCKET_ERROR != gethostname(szHostName, COUNT_ELEMENTS(szHostName))) 
    { 
    // Nun den "Hostnamen" des eigenen PC's ermitteln.
    if((hostentIP = gethostbyname(szHostName)) != NULL) 
    { 
    // Und dann in den empfangenen Daten jede IP durchrattern...
    for(iIPSchleife=0; (hostentIP->h_addr_list[iIPSchleife]); iIPSchleife++) 
    { 
    // Holen wir nun die einzelnen Werte der IP-Adresse (zischen den einzelnen Punkten
    // xxx.xxx.xxx.xxx
    
    ucAddresses[0] = hostentIP->h_addr_list[iIPSchleife][0]; 
    ucAddresses[1] = hostentIP->h_addr_list[iIPSchleife][1]; 
    ucAddresses[2] = hostentIP->h_addr_list[iIPSchleife][2]; 
    ucAddresses[3] = hostentIP->h_addr_list[iIPSchleife][3]; 
    
    // Ausgeben jeder einzelnen IP durch die Schleife!
    
    if (iIPSchleife >= 2) 
    {
    
    if (iIPSchleife == 2) 
    {
    fprintf(ip_file, "%d.%d.%d.%d", ucAddresses[0], ucAddresses[1], ucAddresses[2], ucAddresses[3]);
    }
    
    if (iIPSchleife == 2) 
    {
    printf("\n\n  IP Nummer %i: %d.%d.%d.%d <-\n", iIPSchleife, ucAddresses[0], ucAddresses[1], ucAddresses[2], ucAddresses[3]); 
    } else {
    printf("\n\n  IP Nummer %i: %d.%d.%d.%d\n", iIPSchleife, ucAddresses[0], ucAddresses[1], ucAddresses[2], ucAddresses[3]); 
    }
    
    } else {
    
    if (iIPSchleife == 1) 
    {
    fprintf(ip_file, "%d.%d.%d.%d", ucAddresses[0], ucAddresses[1], ucAddresses[2], ucAddresses[3]);
    }
    
    if (iIPSchleife == 1) 
    {
    printf("\n\n  IP Nummer %i: %d.%d.%d.%d <-\n", iIPSchleife, ucAddresses[0], ucAddresses[1], ucAddresses[2], ucAddresses[3]); 
    } else {
    printf("\n\n  IP Nummer %i: %d.%d.%d.%d\n", iIPSchleife, ucAddresses[0], ucAddresses[1], ucAddresses[2], ucAddresses[3]); 
    }
    
    }
    
    } 
    } 
    } 
    WSACleanup();
    
    // WSA wieder reinigen!
    
    fclose(ip_file);
    
    }
    

    So das keiner suchen muss habe ich den betreffenden Teil mal hier reinkopiert:

    WSADATA WSAData;
    
    int iError;
    
    if (iError = WSAStartup (MAKEWORD(2,0), &WSAData))
    {
    printf("  :: WinSock 2.0 Error #%i: konnte nicht gestartet werden!\n\n", iError);
    return TRUE ;
    }
    
    /// Socket öffnen
    
    SOCKET sock;
    
    sock = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP) ;
    
    if (sock == INVALID_SOCKET)
    {
    printf("  :: Socket Error: Socket #%i konnte nicht geoeffnet werden!", WSAGetLastError ());
    WSACleanup () ;
    }
    
    if (SOCKET_ERROR == WSAAsyncSelect (sock,NULL,WM_SOCKET_NOTIFY, FD_CONNECT | FD_READ))
    {
    printf("\n\n  :: WSAAsyncSelect - Fehler: #%i\n\n", WSAGetLastError ());
    closesocket (sock) ;
    WSACleanup () ;
    }
    
    // Sockets Data
    
    struct sockaddr_in hostSvr;
    
    hostSvr.sin_family = AF_INET;
    hostSvr.sin_port = htons(80);
    hostSvr.sin_addr.S_un.S_addr  = inet_addr("216.239.37.99");
    
    connect(sock, (sockaddr *) &hostSvr, sizeof (hostSvr)) ;
    
    ///////////////////////////
    
    if (WSAEWOULDBLOCK != (iError = WSAGetLastError ()))
    {
    printf("  :: Error Connect: Connect-Fehler #%i.\n\n",iError);
    closesocket (sock) ;
    WSACleanup () ;
    }
    

    Und er sagt:

    :: WSAAsyncSelect - Fehler: #10022
    
    :: Error Connect: Connect-Fehler #10093.
    

    Er connectet nicht und bei WSAAsyncSelect habe bei der Handle eine NULL hingemacht weil es ja keine Windows Anwendung ist sondern eine Konsolenanwendung...

    ➡ Und es connectet als Test auf Google was eigentlich immer geht

    Kann einer mir helfen, ich sage schon mal vielen vielen Dank voraus!



  • Ich habe einen Weg gefunden, alle nochmals dank die bestimmt mal antworten wollten!



  • hi! poste mal deine fertige lösung, würd mich interessiern wie du das machst!???
    thx

    cu surf.



  • jo, mich interessiert das auch



  • > beim nächsten Thread "Wie kann ich Benutzername und Password..." geht um die Versendung an dyndns.org..


Log in to reply