= nng_tcp(7) // // Copyright 2018 Staysail Systems, Inc. // Copyright 2018 Capitar IT Group BV // // 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 int nng_tcp_register(void); ---- == DESCRIPTION (((transport, _tcp_))) The ((_tcp_ transport)) provides communication support between _nng_ 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 The _nng_tcp_ transport is generally built-in to the _nng_ core, 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`. 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`. NOTE: When using symbolic names, the name is resolved when the name is first used. _nng_ won't become aware of changes in the name resolution until restart, usually. (This is a bug and will likely be fixed in the future.) 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 <> structure, the actual structure is either of type <> (for IPv4) or <> (for IPv6). === Transport Options The _nng_tcp_ transport has no special options. NOTE: Options for TCP keepalive, linger, and nodelay are planned. == SEE ALSO <>, <>, <>, <>