Probleme mit Socket
-
Hallo,
cih versuche gerade einen kleinen TCP/IP Client zusammen zubastel. Dabei habe ich folgendes Problem. ICh möchte die IP anzeigen, aber irgendwie klappt das nciht. wäre toll, wenn jemand den fehler finden würde.
void main(int param, char *params[]) { long ip = inet_addr(params[1]); if (ip == INADDR_NONE) error("IP address"); int p; if (param <= 2) p = 0; else p = atoi(params[2]); if (p<1024 || p>0xFFFF) { p=19703; printf("Using default port 19703."); } printf("\nClient initiated"); WSADATA wsaData; if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) error("Startup"); SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == INVALID_SOCKET) error("initializing socket"); sockaddr_in *serv_addr= new sockaddr_in; serv_addr->sin_family = AF_INET; serv_addr->sin_port = p; serv_addr->sin_addr.s_addr = ip; printf("\nCurrent IP: %l\n", serv_addr); if (connect(sock, (sockaddr*)serv_addr, sizeof(sockaddr_in)) == SOCKET_ERROR) {......
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Paltform SDK schrieb:
The inet_ntoa function converts an (Ipv4) Internet network address into a string in Internet standard dotted format
-
Hallo,
danke, habs jetzt.
habe allerdings ein neus Problem. ich ermittle den hostnamen des eigenen Rechners. das Funktioniert auch. nun möchte ich die ip adresse aus dem hostnamen ermitteln. dabei komme ich allerdings irgendwie nicht.
wäre toll, wenn mir da jemand helfen könnte.
hier mal der code-auszug:printf("\nHostname: "); if((gethostname(hostname, HNAMESIZE)) != 0) { printf("Scheissendreck\n%s", "Fehler!"); } printf("%s\n", hostname); struct hostent *host; printf("Passende IP Adresse zu Hostname (\"%s\"): ", hostname); host= gethostbyname(hostname); if(host==NULL) { printf("gethostbyname:\n%s","Fehler"); } serv_addr->sin_addr = *(struct in_addr*) host->h_addr; printf(" %s\n", host->h_addr);
-
Soviel ich weiss, war host->h_addr gar keine Zeichenkette.
Aber man kann's glaube ich so fuschen:wsprintf(variable,"%u.%u.%u.%u\n",(unsigned int)host->h_addr[0],(unsigned int)host->h_addr[1],(unsigned int)host->h_addr[2],(unsigned int)host->h_addr[3]);