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>