NAME
socket - create a TCP or a UNIX domain socket and connect to stdin/out
SYNOPSIS
socket [ -bcfqrvw ] [ -p command ] [ -B local address ] host port
socket [ -bcfqrvw ] [ -p command ] /path
socket [ -bcfqrvw ] [ -p command ] [ -B local address ] -s [ -l ] port
socket [ -bcfqrvw ] [ -p command ] -s [ -l ] /path
DESCRIPTION
Socket creates an Internet domain TCP or a UNIX domain stream socket
and connects it to stdin and stdout. The host argument can be an
Internet number in dot-notation (like ‘‘130.149.28.10’’) or a domain
name. In this case it must be possible to resolve the name to a valid
Internet address with gethostbyname(3). The port argument can be a
port number or a service name which can be mapped to a port number by
getservbyname(3). If an UNIX domain socket is wanted to be created
instead of an Internet socket, specify the path instead of an internet
(canonical domain named or dot-notated) host. The hostname is treated
as a pathname if contains at least a single slash. I.e. if one wants to
create or connect to a socket in the current directory, use ./filename
to specify the connection point.
OPTIONS
-b (background)
The program forks itself into the background, detaches from its
controlling tty, closes the file descriptors associated with the
tty, and changes its current directory to the root directory.
-B (local address)
This option specifies which local address to binded to when
making a connection.
-c (crlf)
Linefeed characters (LF) are converted to a Carriage Return
Linefeed sequence (CRLF) when written to the socket. CRLF
sequences read from the socket are converted to a single LF.
-f (fork)
When a server connection has been accepted, a separate process
is forked to handle the connection in background.
-l (loop)
(only valid with -s) After a connection has been closed, another
connection is accepted.
-p (program)
The specified command is executed for each connection. Its
standard input, standard output, and standard error channels are
connected to the socket. Command can be any shell command since
it is passed to /bin/sh.
-q (quit)
The connection is closed when an end-of-file condition occurs on
standard input.
-r (read only)
No data is read from standard input and written to the socket.
-s (server)
A server socket is created. A hostname argument is not required
of Internet sockets, only the port number but a pathname is
required for UNIX domain sockets.
-v (verbose)
Messages about connections etc. are issued to stderr.
-w (write only)
No data is read from the socket and written to the standard
output.
-version
Socket prints its version ID and terminates. This must be the
first argument to have an effect.
EXAMPLES
The command
socket -v coma.cs.tu-berlin.de nntp
connects to the nntp port (port 119) of coma.cs.tu-berlin.de
(130.149.28.10).
The command
socket -sl 3425
creates a server socket on port 3425 on the local host and waits for a
connection. After a connection has been closed, a new connection is
accepted.
The command
socket -wslqvp "echo Socket! " 1938
creates a server socket on port 1938 on the local host and waits for a
connection. When a connection is accepted, the string "Socket!" is
written to the socket. No data is read from the socket and written to
the finger program. The connection is closed when an end-of-file
condition at the standard output of the program occurs. Then a new
connection is accepted.
DIAGNOSTICS
Lots of diagnostics for failed system calls.
unknown host host
host’s address could not be resolved.
Signal signal caught, exiting
Socket exits on any signal other than SIGTSTP, SIGCONT, SIGCLD,
SIGQUIT.
A non-zero exit code is returned if socket terminates due to an error
condition or a signal.
SEE ALSO
ip(7), tcp(7), unix(7), accept(2), bind(2), listen(2), connect(2),
socket(2), gethostbyname(3), getservbyname(3)
BUGS
socket -p terminates due to a SIGPIPE signal when there is more data
from the socket available than the executed program wants to read.
Please report any other bugs to the author.
VERSION
This manual page describes Socket-1.1.
AUTHOR
Juergen Nickelsen <nickel@cs.tu-berlin.de>
Aug 6, 1992