git-subtree-dir: external/nng git-subtree-split: 29b73962b939a6fbbf6ea8d5d7680bb06d0eeb99
110 lines
3.5 KiB
Text
110 lines
3.5 KiB
Text
= nng_tcp(7)
|
|
//
|
|
// Copyright 2019 Staysail Systems, Inc. <info@staysail.tech>
|
|
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
|
|
//
|
|
// This document is supplied under the terms of the MIT License, a
|
|
// copy of which should be located in the distribution where this
|
|
// file was obtained (LICENSE.txt). A copy of the license may also be
|
|
// found online at https://opensource.org/licenses/MIT.
|
|
//
|
|
|
|
== NAME
|
|
|
|
nng_tcp - TCP/IP transport
|
|
|
|
== SYNOPSIS
|
|
|
|
[source,c]
|
|
----
|
|
#include <nng/transport/tcp/tcp.h>
|
|
|
|
int nng_tcp_register(void);
|
|
----
|
|
|
|
== DESCRIPTION
|
|
|
|
(((transport, _tcp_)))
|
|
The ((_tcp_ transport)) provides communication support between
|
|
sockets across a ((TCP/IP)) network.
|
|
Both IPv4 and IPv6 are supported when the underlying platform also supports it.
|
|
|
|
// We need to insert a reference to the nanomsg RFC.
|
|
|
|
=== Registration
|
|
|
|
This transport is generally built-in to the core of _NNG_, so
|
|
no extra steps to use it should be necessary.
|
|
|
|
=== URI Format
|
|
|
|
(((URI, `tcp://`)))
|
|
This transport uses URIs using the scheme `tcp://`, followed by
|
|
an IP address or hostname, followed by a colon and finally a
|
|
TCP port number.(((port number, TCP)))
|
|
For example, to contact port 80 on the localhost either of the following URIs
|
|
could be used: `tcp://127.0.0.1:80` or `tcp://localhost:80`.
|
|
|
|
A URI may be restricted to IPv6 using the scheme `tcp6://`, and may
|
|
be restricted to IPv4 using the scheme `tcp4://`.
|
|
|
|
NOTE: Specifying `tcp6://` may not prevent IPv4 hosts from being used with
|
|
IPv4-in-IPv6 addresses, particularly when using a wildcard hostname with
|
|
listeners.
|
|
The details of this varies across operating systems.
|
|
|
|
NOTE: Both `tcp6://` and `tcp4://` are specific to _NNG_, and might not
|
|
be understood by other implementations.
|
|
|
|
TIP: We recommend using either numeric IP addresses, or names that are
|
|
specific to either IPv4 or IPv6 to prevent confusion and surprises.
|
|
|
|
When specifying IPv6 addresses, the address must be enclosed in
|
|
square brackets (`[]`) to avoid confusion with the final colon
|
|
separating the port.
|
|
|
|
For example, the same port 80 on the IPv6 loopback address (`::1`) would
|
|
be specified as `tcp://[::1]:80`.
|
|
|
|
The special value of 0 (`INADDR_ANY`)(((`INADDR_ANY`)))
|
|
can be used for a listener to indicate that it should listen on all
|
|
interfaces on the host.
|
|
A short-hand for this form is to either omit the address, or specify
|
|
the asterisk (`*`) character.
|
|
For example, the following three URIs are all equivalent,
|
|
and could be used to listen to port 9999 on the host:
|
|
|
|
1. `tcp://0.0.0.0:9999`
|
|
2. `tcp://*:9999`
|
|
3. `tcp://:9999`
|
|
|
|
The entire URI must be less than `NNG_MAXADDRLEN` bytes long.
|
|
|
|
=== Socket Address
|
|
|
|
When using an xref:nng_sockaddr.5.adoc[`nng_sockaddr`] structure,
|
|
the actual structure is either of type
|
|
xref:nng_sockaddr_in.5.adoc[`nng_sockaddr_in`] (for IPv4) or
|
|
xref:nng_sockaddr_in6.5.adoc[`nng_sockaddr_in6`] (for IPv6).
|
|
|
|
=== Transport Options
|
|
|
|
The following transport options are supported by this transport,
|
|
where supported by the underlying platform.
|
|
|
|
* xref:nng_options.5.adoc#NNG_OPT_LOCADDR[`NNG_OPT_LOCADDR`]
|
|
* xref:nng_options.5.adoc#NNG_OPT_REMADDR[`NNG_OPT_REMADDR`]
|
|
* xref:nng_tcp_options.5.adoc#NNG_OPT_TCP_KEEPALIVE[`NNG_OPT_TCP_KEEPALIVE`]
|
|
* xref:nng_tcp_options.5.adoc#NNG_OPT_TCP_NODELAY[`NNG_OPT_TCP_NODELAY`]
|
|
* xref:nng_options.5.adoc#NNG_OPT_URL[`NNG_OPT_URL`]
|
|
|
|
|
|
== SEE ALSO
|
|
|
|
[.text-left]
|
|
xref:nng_options.5.adoc[nng_options(5)],
|
|
xref:nng_sockaddr.5.adoc[nng_sockaddr(5)],
|
|
xref:nng_sockaddr_in.5.adoc[nng_sockaddr_in(5)],
|
|
xref:nng_sockaddr_in6.5.adoc[nng_sockaddr_in6(5)],
|
|
xref:nng_tcp_options.5.adoc[nng_tcp_options(5)],
|
|
xref:nng.7.adoc[nng(7)]
|