Chapter 10. Sockets for Servers
The last chapter discussed sockets from the standpoint of
clients: programs that open a socket to a server
that’s listening for connections. However, client sockets themselves
aren’t enough; clients aren’t much use unless they can talk to a server,
and the Socket
class discussed in the
last chapter is not sufficient for writing servers. To create a Socket
, you need to know the Internet host to
which you want to connect. When you’re writing a server, you don’t know in
advance who will contact you, and even if you did, you wouldn’t know when
that host wanted to contact you. In other words, servers are like
receptionists who sit by the phone and wait for incoming calls. They don’t
know who will call or when, only that when the phone rings, they have to
pick it up and talk to whoever is there. You can’t program that behavior
with the Socket
class alone.
For servers that accept connections, Java provides a ServerSocket
class that represents server
sockets. In essence, a server socket’s job is to sit by the phone and wait
for incoming calls. More technically, a server socket runs on the server
and listens for incoming TCP connections. Each server socket listens on a
particular port on the server machine. When a client on a remote host
attempts to connect to that port, the server wakes up, negotiates the
connection between the client and the server, and returns a regular
Socket
object representing the socket between the two hosts. In other words, server ...
Get Java Network Programming, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.