Q:

How could one single server socket communicate with multiple client sockets

I've seen this post
http://docs.oracle.com/javase/tutorial/networking/sockets/definition.html
since it wrote:

If everything goes well, the server accepts the connection. Upon
  acceptance, the server gets a new socket bound to the same local port
  and also has its remote endpoint set to the address and port of the
  client. It needs a new socket so that it can continue to listen to the
  original socket for connection requests while tending to the needs of
  the connected client.

So are there multiple server sockets which has the same port in the server side?

A:

There is one ServerSocket. It accepts incoming connections through the accept() method. This returns a Socket which you use on the server side to handle the connection to a particular client.

