2017-01-24 4 views
1

Stellen Sie sich vor, der Client hat einen Socket, der auf dem Port 80 abhört. Kann dieser Socket mit einem Server-Socket verbunden werden, der auf einem anderen Port horcht? Oder muss der Server auch auf Port 80 hören?Können zwei angeschlossene Buchsen auf verschiedenen Ports hören?

Ich verweise Netzwerk-Sockets vom Typ AF_INET.

+0

Nicht klar, was Sie erreichen möchten. Vielleicht solltest du zuerst einen guten Artikel über Steckdosen lesen? – Olaf

Antwort

3

Es ist nicht erforderlich, dass die Portnummer an zwei verschiedenen Enden einer TCP-Verbindung identisch sein muss. In der Tat sind sie selten.

Der Server-Socket (der Server, der abhört) muss an eine bekannte Portnummer gebunden sein (z. B. 80 für HTTP), damit ein Client wissen kann, wo er eine Verbindung herstellen soll. Wenn ein Client-Socket eine Verbindung zum Server herstellt, wird eine verfügbare lokale Portnummer normalerweise zufällig ausgewählt. Der Client hat die Möglichkeit, vor dem Verbinden an einen bestimmten Port zu binden, dies ist jedoch nicht erforderlich.

Ein TCP-Socket wird durch 4 Werte definiert: lokale IP, lokaler Port, Remote-IP, Remote-Port. Aus diesem Grund können Sie mehrere Client-Sockets (alle mit derselben lokalen IP, aber unterschiedlichen Ports) verwenden, die jeweils mit einer bestimmten Remote-IP und einem Remote-Port verbunden sind.

+0

Danke! Das beantwortet meine Frage! Nur noch eine kleine Frage, nachdem der Client einen zufälligen Port ausgewählt hat, teilt das Betriebssystem dem Server mit, welcher Port gewählt wurde, oder? Nochmals vielen Dank für Ihre Antwort! –

+0

@DanielOliveira Ja, wenn der Server eine neue Verbindung akzeptiert, werden die IP und der Port des Clients in einem Parameter an die 'accept' Funktion zurückgegeben. – dbush

Verwandte Themen