Also es ist so, dass du dich nicht nur an einen Port bindest, sondern auch an eine IP. Jedoch sind bei IPs auch Bereiche möglich (besser gesagt Wildcards). Vom Verständnis her klappt es aber so wie du es gesagt hast.
Dein letzter Satz stimmt nicht ganz. Dein welcomeSocket-Objekt übernimmt nur die eingehenden Anrufe (nach deinen Angaben aus bind). Dies tut es aber erst nach dem du welcomeSocket.Listen() gemacht hast. Jedoch kann dein welcomeSocket-Objekt nicht arbeiten (antworten, Daten empfangen) da er nicht voll definiert ist. Dazu musst du mit welcomeSocket.Accept() ein neues Socket-Objekt erstellen. Dieses Spricht dann eben nur mit genau diesem einen Partner (IP).
welcomeSocket verwaltet also eine Liste aller Verbindungsanfragen. und Accept() gibt einen Socket aus dieser Liste zurück (erst jetzt ist eine volle Verbindung zustande gekommen). Wenn du den Socket den Accept() zurück gibt in einem eigenen Thread verarbeitest, kannst du so mehrere Verbindungen gleichzeitig verarbeiten. Ansonsten müssten die Anderen Partner immer warten, bis du mit dem anderen fertig bist.
|