WinSock2 bind() Error: 10048
-
Ja mit dem Forum sorry.
Aber irgendwie hat mir das jetzt auch nicht weiter geholfen.
-
http://msdn.microsoft.com/en-us/library/ms737625(VS.85).aspx schrieb:
The socket's local address is already in use and the socket was not marked to allow address reuse with SO_REUSEADDR
Also wirst du wohl mal suchen müssen, wie du ihn als SO_REUSEADDR marken kannst, wenn ich das richtig verstanden habe...
bb
-
BOOL ReuseAddr = TRUE;
MySock->SetSockOpt(SO_REUSEADDR, (LPVOID)&ReuseAddr, sizeof(BOOL), SOL_SOCKET);
soo, aber ich will ja kein socket nochmal nutzen. Ich hab ja 2 verschieden Sockets: s und x
-
hmstr schrieb:
Wie kann ich nun die "Spuren" des connect()-Versuchs wieder löschen?
Den Socket wieder schließen.
-
Ja aber das bringt ja irgendwie alles nix auch wenn ich mit dem Socket s keien Ahnung was mache. Der bind() - Befehl wird ja mit Socket x gemacht.
-
Stimmt, übersehen.
"unskilled"s Tipp mit SO_REUSEADDR hört sich gut an. Dabei geht's auch nicht darum, dass du einen Socket zweifach benutzen willst, sondern es greift, wenn der Port, an den du dich binden willst, schon von einem anderen Socket "besetzt" ist.
-
Dieser Thread wurde von Moderator/in Phoemuex 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.
-
Also habe jetzt die 2 Sockets auf SO_REUSEADDR gesetzt. Jetzt klappt das auch mit dem bind. Also beim ersten mal wird der Socket in den listen()-Modus gesetzt, aber dann beim zweiten mal ausführen kann er trotzdem nicht connecten. Fehlercode #10061. Aber irgendwie kann ich nichts nützliches finden.. Jemand eine Idee woran das liegen kann?
Danke,
hmstr
-
Hallo und Guten Tag,
ich verstehe nicht so recht wo Du Dein Problem hast, kann Dir aber sagen dass ich z.Zt. ein Projekt bearbeite bei dem 3 Computer (2 Win-Xp, 1 HP-Unix) in einem 200ms Takt per Client/Server (Socket-Verbindungen) miteinander arbeiten und einer der Windows Computer dann noch eine zusätzliche rechnerinterne Client/Server Aufgabe zu erfüllen hat,
alles läuft hervorragend und sozusagen "bis zum Sankt Nimmerleinstag" wenn Du Dich an die Vorschriften hältst:
CLIENT:
- ... WSAStartup ... (einmalig)
- ... gethostbyname ... (einmalig)
- ... getservbyname ... (einmalig)- ... remote_address.sin_family ... (einmalig)
- ... remote_address.sin_port ... (einmalig)
- ... remote_address.sin_addr ... (einmalig)- ... socket ... (zyklisch)
- ... connect ... (zyklisch)
- ... send/recv ... (zyklisch)
- ... closesocket ... (zyklisch)- ... closesocket ... (einmalig)
SERVER:
- ... WSAStartup ... (einmalig)
- ... gethostbyname ... (einmalig)
- ... getservbyname ... (einmalig)
- ... socket ... (einmalig)- ... local_address.sin_family ... (einmalig)
- ... local_address.sin_port ... (einmalig)
- ... local_address.sin_addr ... (einmalig)- ... bind ... (einmalig)
- ... listen ... (einmalig)- ... accept ... (zyklisch)
- ... recv/send ... (zyklisch)
- ... closesocket ... (zyklisch)- ... closesocket ... (einmalig)
Vielleicht und Hoffentlich hilft Dir Vorstehendes einwenig weiter,
mfg
ZZR-1100
-
Ich habe das Problem jetzt gelöst. Aber bin mir sicher das mir das trotzdem bei der weiteren Arbeit mit Sockets weiter hilft. Vielen Dank.
Klappt jetzt alles so weit
Danke