Package io.vertx.core.net

## Interface NetClient

- All Superinterfaces:
    `Measured`

      public interface NetClient
      extends Measured

  A TCP client.

  Multiple connections to different servers can be made using the same instance.

  This client supports a configurable number of connection attempts and a configurable delay between attempts.

  Author:
    Tim Fox

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `default Future<Void>` | `close()` | Close immediately (`shutdown(0, TimeUnit.SECONDS`).
    `Future<NetSocket>` | `connect​(int port, String host)` | Open a connection to a server at the specific `port` and `host`.
    `Future<NetSocket>` | `connect​(int port, String host, String serverName)` | Open a connection to a server at the specific `port` and `host`.
    `Future<NetSocket>` | `connect​(ConnectOptions connectOptions)` | Open a connection to a server at the specific `connectOptions`.
    `Future<NetSocket>` | `connect​(SocketAddress remoteAddress)` | Open a connection to a server at the specific `remoteAddress`.
    `Future<NetSocket>` | `connect​(SocketAddress remoteAddress, String serverName)` | Open a connection to a server at the specific `remoteAddress`.
    `default Future<Void>` | `shutdown()` | Shutdown with a 30 seconds timeout (`shutdown(30, TimeUnit.SECONDS)`).
    `Future<Void>` | `shutdown​(long timeout, TimeUnit unit)` | Initiate the client shutdown sequence.
    `default Future<Boolean>` | `updateSSLOptions​(ClientSSLOptions options)` | Update the client with new SSL `options`, the update happens if the options object is valid and different from the existing options object.
    `Future<Boolean>` | `updateSSLOptions​(ClientSSLOptions options, boolean force)` | Update the client with new SSL `options`, the update happens if the options object is valid and different from the existing options object.

    - ### Methods inherited from interface io.vertx.core.metrics.Measured

      `isMetricsEnabled`

- - ### Method Detail

    - #### connect

          Future<NetSocket> connect​(int port,
                                    String host)

      Open a connection to a server at the specific `port` and `host`.

      `host` can be a valid host name or IP address. The connect is done asynchronously and on success, a `NetSocket` instance is supplied via the `connectHandler` instance

      Parameters:
        `port` - the port
        `host` - the host
      Returns:
        a future notified when the socket is connected

    - #### connect

          Future<NetSocket> connect​(int port,
                                    String host,
                                    String serverName)

      Open a connection to a server at the specific `port` and `host`.

      `host` can be a valid host name or IP address. The connect is done asynchronously and on success, a `NetSocket` instance is supplied via the `connectHandler` instance

      Parameters:
        `port` - the port
        `host` - the host
        `serverName` - the SNI server name
      Returns:
        a future notified when the socket is connected

    - #### connect

          Future<NetSocket> connect​(SocketAddress remoteAddress)

      Open a connection to a server at the specific `remoteAddress`.

      The connect is done asynchronously and on success, a `NetSocket` instance is supplied via the `connectHandler` instance

      Parameters:
        `remoteAddress` - the remote address
      Returns:
        a future notified when the socket is connected

    - #### connect

          Future<NetSocket> connect​(SocketAddress remoteAddress,
                                    String serverName)

      Open a connection to a server at the specific `remoteAddress`.

      The connect is done asynchronously and on success, a `NetSocket` instance is supplied via the `connectHandler` instance

      Parameters:
        `remoteAddress` - the remote address
        `serverName` - the SNI server name
      Returns:
        a future notified when the socket is connected

    - #### connect

          Future<NetSocket> connect​(ConnectOptions connectOptions)

      Open a connection to a server at the specific `connectOptions`.

      The connect is done asynchronously and on success, a `NetSocket` instance is supplied via the `connectHandler` instance

      Parameters:
        `connectOptions` - the options describing how to connect to the remote server
      Returns:
        a future notified when the socket is connected

    - #### close

          default Future<Void> close()

      Close immediately (`shutdown(0, TimeUnit.SECONDS`).
      Returns:
        a future notified when the client is closed

    - #### shutdown

          default Future<Void> shutdown()

      Shutdown with a 30 seconds timeout (`shutdown(30, TimeUnit.SECONDS)`).
      Returns:
        a future completed when shutdown has completed

    - #### shutdown

          Future<Void> shutdown​(long timeout,
                                TimeUnit unit)

      Initiate the client shutdown sequence.

      Connections are taken out of service and notified the close sequence has started through `NetSocket.shutdownHandler(Handler)`. When all connections are closed the client is closed. When the `timeout` expires, all unclosed connections are immediately closed.

      Parameters:
        `timeout` - the amount of time after which all resources are forcibly closed
        `unit` - the of the timeout
      Returns:
        a future notified when the client is closed

    - #### updateSSLOptions

          default Future<Boolean> updateSSLOptions​(ClientSSLOptions options)

      Update the client with new SSL `options`, the update happens if the options object is valid and different from the existing options object.

      The boolean succeeded future result indicates whether the update occurred.

      Parameters:
        `options` - the new SSL options
      Returns:
        a future signaling the update success

    - #### updateSSLOptions

          Future<Boolean> updateSSLOptions​(ClientSSLOptions options,
                                           boolean force)

      Update the client with new SSL `options`, the update happens if the options object is valid and different from the existing options object.

      The `options` object is compared using its `equals` method against the existing options to prevent an update when the objects are equals since loading options can be costly, this can happen for share TCP servers. When object are equals, setting `force` to `true` forces the update.

      The boolean succeeded future result indicates whether the update occurred.

      Parameters:
        `options` - the new SSL options
        `force` - force the update when options are equals
      Returns:
        a future signaling the update success