Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#5

Re: Connect / Disconnect bei IdTCPClient

  Alt 13. Jan 2010, 15:45
Hallo,

ich hol den Thread mal hoch, um das technisch klar zu machen:

Wenn der Socket geschlossen wird, geht dieser in den FD_WAIT State bis WinSock (Windows) ihn freigibt. Und so lange ist es nicht möglich, die gleiche Verbindung erneut aufzubauen:

Wichtig ist für WinSock die Kombination aus Source IP, Source Port, Ziel IP und Ziel Port. Sind alle 4 identisch und ein Socket ist mit diesen Parameters noch im FD_WAIT, gibt es die Fehlermeldung WSAEADDRINUSE (10048). Intern geschieht dies im Bind(), kann aber auch erst im Connect() auftreten (laut MSDN und leidlicher Praxis).

Ergo, wer BoundIP und BoundPort nutzt, sollte sich klar machen, das ein 10048 wahrscheinlich wird. Ohne diese Parameter überlässt man es WinSock eine geeignete lokale IP und Port zu nehmen, spart sich also eine Menge Probleme.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat