262. Writing a non-blocking TCP server/client application
In this problem, we will write a non-blocking TCP server/client application.
A non-blocking socket (or a socket in non-blocking mode) allows us to perform I/O operations on socket channels without blocking the processes that are using it. The major steps of a non-blocking application are exactly the same as for a blocking application. The server is opened and bound to a local address ready to handle incoming clients. A client is opened and connected to the server. From this point forward, the server and the client can exchange data packets in a non-blocking fashion.
When we refer to exchanging data in a non-blocking fashion, we refer to the pillar of non-blocking technology, which is the java.nio.channels.Selector
class. The role of the Selector
is to orchestrate data transfer across multiple available socket channels. Basically, a Selector
can monitor every single recorded socket channel and detect the channels that...