The Java Socket
class has two methods isClosed
and isConnected
to check whether the socket is closed or connected respectively. I want
This page gives a fairly good overview on socket states: http://diranieh.com/SOCKETS/SocketStates.htm and the difference between TCP and UDP sockets. Particularly:
Note that newer implementations of java.net.DatagramSocket support an extension to the TCP/IP network states: A DatagramSocket can also be in the state "connected", so that isConnected() does not necessarily return false even though a datagram socket is never "connected" at the network layer. In particular: "When a DatagramSocket is connected to a remote address, packets may only be sent to or received from that address. By default a datagram socket is not connected."
For more information, see the sources and the JavaDoc.
To put things simply, a Socket
that is open is a socket that is either waiting for connection or has successfully connected with another Socket
. When a socket has been closed, it means that this socket is no longer available for connection, and that it's resources has already been released. A Socket
that is connected, well, it means that the socket is connected to another Socket
.
So a Socket
can..
UPDATE
from @Bryan
Apparently, there are half-closed or half-open states for TCP Sockets; which usage (today) is different from its original meaning. More on this link.