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!???
thxcu surf.
-
jo, mich interessiert das auch
-
> beim nächsten Thread "Wie kann ich Benutzername und Password..." geht um die Versendung an dyndns.org..