---
name: "libnutclient_tcp"
section: "3"
platform: "linux"
package: "nut"
version: "2.8.5-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libnutclient_tcp"
---

# libnutclient\_tcp(3)

TCP protocol related function for Network UPS Tools high-level client access library

## NAME

libnutclient\_tcp, nutclient\_tcp\_create\_client, nutclient\_tcp\_is\_connected, nutclient\_tcp\_disconnect, nutclient\_tcp\_reconnect, nutclient\_tcp\_set\_timeout, nutclient\_tcp\_get\_timeout, nutclient\_tcp\_get\_ssl\_caps, nutclient\_tcp\_is\_ssl - TCP protocol related function for Network UPS Tools high-level client access library

## SYNOPSIS

```
        #include <nutclient.h>
        #include <cstdint> /* uint16_t */
        #include <ctime> /* time_t */
        typedef NUTCLIENT_t NUTCLIENT_TCP_t;
        NUTCLIENT_TCP_t nutclient_tcp_create_client(
                const char* host, uint16_t port);
        int nutclient_tcp_is_connected(NUTCLIENT_TCP_t client);
        void nutclient_tcp_disconnect(NUTCLIENT_TCP_t client);
        int nutclient_tcp_reconnect(NUTCLIENT_TCP_t client);
        void nutclient_tcp_set_timeout(NUTCLIENT_TCP_t client, time_t timeout);
        time_t nutclient_tcp_get_timeout(NUTCLIENT_TCP_t client);
        /* SSL (NUT STARTTLS) support, behavior may be build-dependent
         * (none/OpenSSL/NSS): */
        /* Capabilities of this build, bitmask: */
        #define UPSCLI_SSL_CAPS_NONE    0       /* No ability to use SSL */
        #define UPSCLI_SSL_CAPS_OPENSSL 1       /* Can use OpenSSL-specific setup */
        #define UPSCLI_SSL_CAPS_NSS     2       /* Can use Mozilla NSS-specific setup */
        int nutclient_tcp_get_ssl_caps(void);
        /* Is the specified client currently connected in SSL mode? */
        int nutclient_tcp_is_ssl(NUTCLIENT_TCP_t client);
        NUTCLIENT_TCP_t nutclient_tcp_create_client_ssl_OpenSSL(
                const char* host, uint16_t port, int try_ssl,
                int force_ssl, int certverify,
                const char *ca_path, const char *ca_file,
                const char *cert_file, const char *key_file, const char *key_pass);
        void nutclient_tcp_set_ssl_config_OpenSSL(NUTCLIENT_TCP_t client,
                int force_ssl, int certverify,
                const char *ca_path, const char *ca_file,
                const char *cert_file, const char *key_file, const char *key_pass);
        NUTCLIENT_TCP_t nutclient_tcp_create_client_ssl_NSS(
                const char* host, uint16_t port, int try_ssl,
                int force_ssl, int certverify,
                const char *certstore_path, const char *certstore_pass,
                const char *certstore_prefix,
                const char *certhost_name,
                const char *certident_name);
        void nutclient_tcp_set_ssl_config_NSS(NUTCLIENT_TCP_t client,
                int force_ssl, int certverify,
                const char *certstore_path, const char *certstore_pass,
                const char *certstore_prefix,
                const char *certhost_name,
                const char *certident_name);
        /* Individual SSL option getters/setters: */
        void nutclient_tcp_set_ssl_try(NUTCLIENT_TCP_t client, int try_ssl);
        int nutclient_tcp_get_ssl_try(NUTCLIENT_TCP_t client);
        void nutclient_tcp_set_ssl_force(NUTCLIENT_TCP_t client, int force_ssl);
        int nutclient_tcp_get_ssl_force(NUTCLIENT_TCP_t client);
        void nutclient_tcp_set_ssl_certverify(NUTCLIENT_TCP_t client, int certverify);
        int nutclient_tcp_get_ssl_certverify(NUTCLIENT_TCP_t client);
        /* OpenSSL (PEM): Trusted CA directory: */
        void nutclient_tcp_set_ssl_capath(NUTCLIENT_TCP_t client, const char* ca_path);
        const char* nutclient_tcp_get_ssl_capath(NUTCLIENT_TCP_t client);
        /* Trusted CA file: */
        void nutclient_tcp_set_ssl_cafile(NUTCLIENT_TCP_t client, const char* ca_file);
        const char* nutclient_tcp_get_ssl_cafile(NUTCLIENT_TCP_t client);
        /* Client certificate (public): */
        void nutclient_tcp_set_ssl_certfile(NUTCLIENT_TCP_t client, const char* cert_file);
        const char* nutclient_tcp_get_ssl_certfile(NUTCLIENT_TCP_t client);
        /* Client key (private): */
        void nutclient_tcp_set_ssl_keyfile(NUTCLIENT_TCP_t client, const char* key_file);
        const char* nutclient_tcp_get_ssl_keyfile(NUTCLIENT_TCP_t client);
        /* OpenSSL and NSS: Client key (private): */
        void nutclient_tcp_set_ssl_keypass(NUTCLIENT_TCP_t client, const char* key_pass);
        const char* nutclient_tcp_get_ssl_keypass(NUTCLIENT_TCP_t client);
        void nutclient_tcp_set_ssl_certstore_path(NUTCLIENT_TCP_t client,
                const char* certstore_path);
        const char* nutclient_tcp_get_ssl_certstore_path(NUTCLIENT_TCP_t client);
        void nutclient_tcp_set_ssl_certstore_prefix(NUTCLIENT_TCP_t client,
                const char* certstore_prefix);
        const char* nutclient_tcp_get_ssl_certstore_prefix(NUTCLIENT_TCP_t client);
        void nutclient_tcp_set_ssl_certident_name(NUTCLIENT_TCP_t client,
                const char* certident_name);
        const char* nutclient_tcp_get_ssl_certident_name(NUTCLIENT_TCP_t client);
        void nutclient_tcp_set_ssl_certhost_name(NUTCLIENT_TCP_t client,
                const char* certhost_name);
        const char* nutclient_tcp_get_ssl_certhost_name(NUTCLIENT_TCP_t client);
```

## DESCRIPTION

These functions allow to manage connections to [**upsd**(8)](/upsd/8.md) using NUT TCP protocol.

• The **nutclient\_tcp\_create\_client()** function create the *NUTCLIENT\_TCP\_t* context and intend to connect to upsd at *host* and *port*.

The context must be freed by *nutclient\_destroy()*.

• *host* can be a sever name or a valid IPv4 or IPv6 address like "localhost", "127.0.0.1" or "::1".

• *port* is a valid TCP port, generally *3493*.

• The **nutclient\_tcp\_is\_connected()** function test if the connection is valid.

• The **nutclient\_tcp\_disconnect()** function force to disconnect the specified connection.

• The **nutclient\_tcp\_reconnect()** function force to reconnect a connection, disconnecting it if needed.

• The **nutclient\_tcp\_set\_timeout()** function set the timeout duration for I/O operations.

• The **nutclient\_tcp\_get\_timeout()** function retrieve the timeout duration for I/O operations.

*timeout* values are specified in seconds, use negative values for blocking.

## SEE ALSO

[**libnutclient**(3)](/libnutclient/3.md) [**libnutclient\_general**(3)](/libnutclient_general/3.md)
