2012-10-02 9 views

Antwort

8

Dinge einfach auszudrücken, ein Socket die offen ist eine Buchse, die für die Verbindung entweder warten oder mit einer anderen Socket erfolgreich verbunden hat. Wenn ein Socket geschlossen wurde, bedeutet dies, dass dieser Socket nicht mehr für die Verbindung verfügbar ist und dass seine Ressourcen bereits freigegeben wurden. A Socket das ist verbunden, nun, es bedeutet, dass die Steckdose mit einem anderen Socket verbunden ist.

So eine Socket Dose ..

  • offen und zugleich verbunden sein.
  • geöffnet und nicht gleichzeitig verbunden sein.
  • im geschlossenen Zustand nicht angeschlossen sein.

UPDATE

von @Bryan

Offenbar gibt es halbgeschlossenen oder halboffenen Zustände für TCP Sockets; welche Verwendung (heute) unterscheidet sich von seiner ursprünglichen Bedeutung. Mehr dazu link.

+2

+1 für die Einfachheit und Klarheit –

+1

Nicht zu verwechseln, aber TCP hat auch einen halbgeschlossenen Zustand, wo es noch eine Verbindung gibt, aber es ist jetzt unidirektional. –

7

Diese Seite gibt einen ziemlich guten Überblick über die Socket-Zustände: http://diranieh.com/SOCKETS/SocketStates.htm und den Unterschied zwischen TCP- und UDP-Sockets. Besonders:

  • Status "Offen" (TCP und UDP): Ein unbenannter Socket wurde erstellt. Ein unbenannter Socket ist einer, der nicht an eine lokale Adresse und einen Port gebunden ist.
  • Status "Verbunden" (nur TCP): Eine Zuordnung (virtuelle Verbindung) wurde zwischen einem lokalen und einem Remote-Host hergestellt. Das Senden und Empfangen von Daten ist jetzt möglich.

Beachten Sie, dass neuere Implementierungen von java.net.DatagramSocket eine Erweiterung der TCP/IP-Netzwerkzustände unterstützen: Ein Datagram kann auch im Zustand „verbunden“ sein, so dass isConnected() nicht unbedingt falsch zurück, auch obwohl ein Datagramm-Socket niemals auf der Netzwerkschicht "verbunden" ist. Insbesondere: "Wenn ein DatagramSocket mit einer Remote-Adresse verbunden ist, können Pakete nur an diese Adresse gesendet oder von ihr empfangen werden. Standardmäßig ist kein Datagramm-Socket verbunden."

Weitere Informationen finden Sie unter sources und JavaDoc.

Verwandte Themen