2012-06-02 6 views
10

Wenn ein Client beispielsweise auf einen Socket unter http://socketplaceonnet.com hört, woher weiß er dann, dass neuer Inhalt vorhanden ist? Ich nehme an, der Server kann keine Daten direkt an den Client senden, da sich der Client hinter einem Router befinden kann, ohne Portweiterleitung, so dass eine direkte Verbindung nicht möglich ist. Der Cliet könnte ein Handy sein, das seine IP-Adresse ändert, also verstehe ich, dass der Server die IP des Kunden nicht kennen muss, damit der Client ein Listener ist.Wie funktioniert das Anhören eines Sockets?

Danke

+1

Ein kurzer [Einführung] (http://ssfnet.org/Exchange/tcp/tcpTutorialNotes.html) (im Zusammenhang mit dem TCP-Protokoll). – Vidul

+2

Die Tatsache, dass die Verbindung direkt ist oder nicht, ändert nichts. Bytes (in Paketen) kommen zu Ihrem Computer (es kann ein Puffer auf Ihrer Netzwerkkarte sein) und als Ergebnis wird ein Signal an Ihre Software gesendet. –

Antwort

46

Ein Client-Socket nicht für eingehende Verbindungen hört, dann leitet eine ausgehende Verbindung zum Server her. Der Server-Socket wartet auf eingehende Verbindungen.

Ein Server erstellt einen Socket, bindet den Socket an eine IP-Adresse und Portnummer (für TCP und UDP) und wartet dann auf eingehende Verbindungen. Wenn ein Client eine Verbindung zum Server herstellt, wird ein neuer Socket für die Kommunikation mit dem Client erstellt (nur TCP). Ein Abfragemechanismus wird verwendet, um festzustellen, ob irgendeine Aktivität in einem der offenen Sockets aufgetreten ist.

Ein Client erstellt einen Socket und stellt eine Verbindung zu einer Remote-IP-Adresse und Portnummer her (für TCP und UDP). Ein Abrufmechanismus kann verwendet werden (select(), poll(), epoll() usw.), um den Socket auf Informationen vom Server zu überwachen, ohne den Thread zu blockieren.

Falls sich der Client hinter einem Router befindet, der NAT (Network Address Translation) bereitstellt, schreibt der Router die Adresse des Clients neu, um sie der öffentlichen IP-Adresse des Routers anzupassen. Wenn der Server antwortet, ändert der Router seine öffentliche IP-Adresse zurück in die IP-Adresse des Clients. Der Router speichert eine Tabelle der aktiven Verbindungen, die er übersetzt, sodass er die Antworten des Servers dem richtigen Client zuordnen kann.

+1

+1 ausgezeichnet und gut in weniger als 14 Zeilen erklärt :) –

+0

+1 Wirklich es ist sehr nett und kurz und süß Erklärung des Polling-Mechanismus des Servers während der Kommunikation. Danke. –

Verwandte Themen