private void initializeServerSocket() throws IOException {
    if (srv_sock == null || srv_sock.isClosed()) {
      if (bind_address == null) {
        srv_sock = socketCreator.forCluster().createServerSocket(port, backlogLimit);
        bind_address = srv_sock.getInetAddress();
      } else {
        srv_sock = socketCreator.forCluster().createServerSocket(port, backlogLimit, bind_address);
      }
      // GEODE-4176 - set the port from a wild-card bind so that handlers know the correct value

      if (port <= 0) {
        port = srv_sock.getLocalPort();
      }
      if (logger.isInfoEnabled()) {
        logger.info("Locator was created at " + new Date());
        logger.info("Listening on port " + getPort() + " bound on address " + bind_address);
      }
      srv_sock.setReuseAddress(true);
    }
  }
After constructing a TcpServer use this method to start its server-socket listening thread.
A TcpServer should be stopped via a ShutdownRequest made through a TcpClient.

@see TcpClient#stop(HostAndPort)
geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java