tcpserver — accepts incoming TCP connections.
tcpserver
[opts
] {host
} {port
} {prog
}
opts
is a series of getopt-style options.
host
is one argument.
port
is one argument.
prog
consists of one or more arguments.
tcpserver waits for connections from TCP clients.
For each connection, it runs prog
, with descriptor 0 reading from the network and descriptor 1 writing to the network.
It also sets up several environment variables.
The server's address is given by host
and port
.
port
may be a name from /etc/services
or a number; if it is 0, tcpserver will choose a free TCP port.
host
may be 0, allowing connections to any local IP address; or a dotted-decimal IP address, allowing connections only to that address; or a host name, allowing connections to the first IP address for that host.
Host names are fed through qualification using dns_ip4_qualify.
tcpserver exits when it receives SIGTERM.
Quiet. Do not print error messages.
(Default.) Print error messages.
Verbose. Print error messages and status messages.
n
Do not handle more than n
simultaneous connections.
If there are n
simultaneous copies of prog
running, defer acceptance of a new connection until one copy finishes.
n
must be a positive integer.
Default: 40.
cdb
Follow the rules compiled into
by tcprules(1).
These rules may specify setting environment variables or rejecting connections from bad sources.
You can rerun tcprules(1) to change the rules while tcpserver is running.
cdb
With [-x] cdb
, allow connections even if
does not exist.
Normally tcpserver will drop the connection if cdb
does not exist.
cdb
banner
Write banner
to the network immediately after each connection is made.
tcpserver writes banner
before looking up TCPREMOTEHOST
, before looking up TCPREMOTEINFO
, and before checking cdb
.
This feature can be used to reduce latency in protocols where the client waits for a greeting from the server.
gid
Switch group ID to gid
after preparing to receive connections.
gid
must be a positive integer.
uid
Switch user ID to uid
after preparing to receive connections.
uid
must be a positive integer.
Same as [-g] GID
[-u] UID
.
Typically GID
and UID
are set by envuidgid(1).
After preparing to receive connections, print the local port number to standard output.
n
Allow a backlog of approximately n
TCP SYNs.
On some systems, n
is silently limited to 5.
On systems supporting SYN cookies, the backlog is irrelevant.
Leave IP options alone. If the client is sending packets along an IP source route, send packets back along the same route.
(Default.) Kill IP options. A client can still use source routing to connect and to send data, but packets will be sent back along the default route.
Delay sending data for a fraction of a second whenever the remote host is responding slowly. This is currently the default, but it may not be in the future; if you want it, set it explicitly.
Never delay sending data; enable TCP_NODELAY
.
(Default.)
Look up the remote host name in DNS to set the environment variable TCPREMOTEHOST
.
Do not look up the remote host name in DNS; remove the environment variable TCPREMOTEHOST
.
To avoid loops, you must use this option for servers on TCP port 53.
Paranoid.
After looking up the remote host name in DNS, look up the IP addresses in DNS for that host name, and remove the environment variable TCPREMOTEHOST
if none of the addresses match the client's IP address.
(Default.) Not paranoid.
localname
Do not look up the local host name in DNS; use localname
for the environment variable TCPLOCALHOST
.
A common choice for localname
is 0.
To avoid loops, you must use this option for servers on TCP port 53.
(Default.)
Attempt to obtain TCPREMOTEINFO
from the remote host.
Do not attempt to obtain TCPREMOTEINFO
from the remote host.
To avoid loops, you must use this option for servers on TCP ports 53 and 113.
n
Give up on the TCPREMOTEINFO
connection attempt after n
seconds.
Default: 26.