public ServerSocket createServerSocket(int port, int backlog, InetAddress bindAddress,
      List<GatewayTransportFilter> transportFilters, int socketBufferSize) throws IOException {
    if (transportFilters.isEmpty()) {
      return ((SCClusterSocketCreator) forCluster())
          .createServerSocket(port, backlog, bindAddress, socketBufferSize, useSSL());
    } else {
      printConfig();
      ServerSocket result = new TransportFilterServerSocket(transportFilters);
      result.setReuseAddress(true);
      // Set the receive buffer size before binding the socket so
      // that large buffers will be allocated on accepted sockets (see
      // java.net.ServerSocket.setReceiverBufferSize javadocs)
      result.setReceiveBufferSize(socketBufferSize);
      try {
        result.bind(new InetSocketAddress(bindAddress, port), backlog);
      } catch (BindException e) {
        BindException throwMe = new BindException(
            String.format("Failed to create server socket on %s[%s]", bindAddress, port));
        throwMe.initCause(e);
        throw throwMe;
      }
      return result;
    }
  }
Create a server socket with the given transport filters.<br>
Note: This method is outside of the
client/server/advanced interfaces because it references WAN classes that aren't
available to them.
geode-core/src/main/java/org/apache/geode/internal/net/SocketCreator.java