Sockets provide a mechanism for communication between two computers using TCP. The client program creates a socket on its end of communication and tries to connect this socket to the server.
When the connection is complete, the server creates a socket object at the end of the message. The client and server can now communicate by writing to and reading from the socket.
The java.net.Socket class represents a socket, and the java.net.ServerSocket class provides a mechanism for a server program to listen on clients and establish connections with them.
When establishing a TCP connection between two computers using sockets, the following steps are taken:
The server instantiates a ServerSocket object, denoting which port number communication is to occur on. The server invokes the accept() method of the ServerSocket class. This method waits until a client connects to the server on the given port. After the server is waiting, a client instantiates a Socket object, specifying the server name and port number to connect to. The constructor of the Socket class attempts to connect the client to the specified server and port number. If communication is established, the client now has a Socket object capable of communicating with the server. On the server side, the accept() method returns a reference to a new socket on the server that is connected to the client socket.
Once connections are established, communication can occur using I / O streams. Each socket has both an OutputStream and an InputStream. The OutputStream client connects to the InputStream server, and the InputStream client connects to the OutputStream server.
TCP is a twoway communication protocol, so data can be sent simultaneously through both streams. The following useful classes provide a complete set of methods for implementing sockets.
source share