Problem beim Verbinden auf IP Adresse
-
Hallo Leute!
Den Quellcode habe ich mal im Forum gefunden, ich weiß nimmer ob hier oder woanders.
Die IP Adresse stimmt, einen Ping dahin kann ich ausführen. Die Firewall ist auch aus, der Port stimt auch.Hat jemand ne Idee? (ich glaub schon)
char buff[512] = ""; char buffer[1024] = ""; char * pos = NULL; int y = 0; CString s = ""; WSADATA wsaData; struct hostent *hp; unsigned int addr; struct sockaddr_in server; // Socketprogrammierung inizialisieren int wsaret=WSAStartup(0x101,&wsaData); if(wsaret) return 0; // Socket erstellen und öffnen SOCKET conn; conn=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(conn==INVALID_SOCKET) return 0; if(inet_addr("192.168.1.5")==INADDR_NONE) { hp=gethostbyname("192.168.1.5"); } else { addr=inet_addr("192.168.1.5"); hp=gethostbyaddr((char*)&addr,sizeof(addr),AF_INET); } if(hp==NULL) // hier ist hp == NULL { closesocket(conn); return 0; } server.sin_addr.s_addr=*((unsigned long*)hp->h_addr); server.sin_family=AF_INET; server.sin_port=htons(2101); if(connect(conn,(struct sockaddr*)&server,sizeof(server))) { closesocket(conn); return 0; }Für Vorschläge bin ich dankbar.
Viele Grüße
Ranger
-
Ja, ich habe viele Ideen...
Wenn du eine konkrete Frage stellst bzw. die Fehlermeldung schilderst kann man dir vielleicht helfen.
-
Ich dachte das wäre zu sehen,
Gut, dann schreibe ich es konkreter.
Das Handle aus
hp=gethostbyaddr((char*)&addr,sizeof(addr),AF_INET);
ist danach NULL, also wird schließe ich den Socket. Die Adresse, die da vorher eingeragen wird ist aber korrekt, weil ein Ping darauf funktioniert.
Liegt es an der Funktion oder an einer Funktion weiter oben (eventuell auch nur an einer Option).Viele Grüße
RangerPS: Dann können die Ideen jetzt ja sprudeln.

-
If no error occurs, gethostbyaddr returns a pointer to the hostent structure. Otherwise, it returns a null pointer, and a specific error code can be retrieved by calling WSAGetLastError.
->WSAGetLastError
-
Hallo zusammen!
Der letzte Beitrag hat mir nicht wirklich viel gebracht, weil ich mit dem Error an sich nur soweit was anfangen konnte, dass ich die komplette Aufrufstruktur nochmals prüfe. Gut, das kann manchmal auch sehr hilfreich sein.
letztendlich funktioniert es so:
// Socketprogrammierung inizialisieren int wsaret=WSAStartup(0x0202,&wsaData); if(wsaret) return 0; if(wsaData.wVersion != 0x0202) { WSACleanup(); return 0; } server.sin_family = AF_INET; server.sin_port = htons(2200); server.sin_addr.s_addr = inet_addr("192.168.1.180"); SOCKET conn; conn=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(conn==INVALID_SOCKET) return 0; if(connect(conn,(SOCKADDR *)&server,sizeof(server)) != SOCKET_ERROR) { // hier Abarbeitung } closesocket(conn); WSACleanup();Viele Grüße,
Ranger