Socket binden
-
Hallo ich habe die letzten Tage damit verbracht duzende von möglichen Configurationen durchzutesten aber ich komm nicht dahinter was ich falsch mache. Ich arbeite unter WinXP pro mit VC++ 6 und versuche verzweifelt ein Socket zu öffnen und ihn zu binden, einen client hab ich schon hinbekommen nur den Server bring ich nicht zu laufen. Konkret: ich bekomme bei der Funktion bind immer den Rückgabe wert -1.
/* initialize windows sockets */ WSADATA wsa; if (WSAStartup(MAKEWORD(1, 1), &wsa)) { m_Output3 = "WSADATA Fehler"; OnOutput3(); //return EXIT_FAILURE; } //Soket erstelln int s = socket(AF_INET, SOCK_STREAM, 0); if (s == -1) { m_Output3 = "Socket Fehler"; OnOutput3(); return; //fehler abfangen } struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_addr.s_addr = htonl(INADDR_ANY); addr.sin_port = htons(80); addr.sin_family = AF_INET; if (bind(s, (struct sockaddr*) &addr, sizeof(addr)) == -1) { m_Output3 = "bind Fehlgeschlagen"; OnOutput3(); return; //fehler abfangen } if (listen(s, 1) == -1) { m_Output3 = "listen Fehlgeschlagen"; OnOutput3(); return; //fehler abfangen } struct sockaddr_in cli; int cli_size = sizeof(cli); SOCKET client; if((client = accept(s, (struct sockaddr*) &cli, &cli_size)) == INVALID_SOCKET) { WSACleanup(); m_Output3 = "accept Fehlgeschlagen"; OnOutput3(); return; //fehler abfangen; }was mir auch noch nicht ganz klar ist, ich kann nur den Port 80 verwenden bei allen anderen hängt es mir das Programm auf.
Fals jemand eine Idee hat woran das liegen könnte; Oder noch besser, eine Lösung wie ich das Fixen kann, wäre ich ewig dankbar
mfg Armin
-
WSAGetLastError() benutzen
-
ok jetz weis ich schon mehr... Fehler 10048 d.h. der Port 80 ist schon im gebrauch... nun ja wenn ich einen anderen hernehme hängt es mir das Programm auf, was könnte daran falsch sein?
-
aha er hat ewig auf den client gewartet weil ich dort den port noch nicht eingestellt habe. der verbindungsaufbau aber jetz hab ich probleme beim senden... nun ja da werd ich mich mal selbs wieder schauen zu informieren und wenns nicht klappt meld ich mich nochmal

vielen dank nochmal
-
Wenn du schon hier bei MFC bist dann verwende MFC (CSocket oder CAsyncSocket)