sockets library
Purpose
Provides communications between processes.
Library
Sockets Library (libsock.a)
Description
This section contains a list of the socket routines pro-
vided by AIX, an overview of sockets and how to use them,
and a list of related publications on networks and commu-
nications that you may find useful.
Socket Routines
The following table is an alphabetical list of the socket
routines and a brief description of each.
accept Accepts a connection on a socket.
bind Binds a name to a socket.
connect Initiates a connection on a socket.
gethostbyaddr Gets network host address.
gethostbyname Gets network host name.
sethostent Opens and rewinds the host entry file.
endhostent Closes the host entry file.
gethostid Gets the unique identifier of the
current host.
sethostid Sets the unique identifier of the
current host.
gethostname Gets the name of the current host.
sethostname Sets the name of the current host.
getnetent Gets network entry.
getnetbyaddr Gets network entry by address.
getnetbyname Gets network entry by name.
setnetent Opens and rewinds the network entry
file.
endnetent Closes the network entry file.
getpeername Gets the name of the connected peer.
getprotoent Gets protocol entry.
getprotobynumber Gets protocol entry by number.
getprotobyname Gets protocol entry by name.
setprotoent Opens and rewinds the protocol entry
file.
endprotoent Closes the protocol entry file.
getservent Gets service entry
getservbyname Gets service entry by name.
getservbyport Gets service entry by port number.
setservent Opens and rewinds the service entry
file.
endservent Closes the service entry file.
getsockname Gets the socket name.
getsockopt Gets options on sockets.
setsockopt Sets options on sockets.
htonl, htons Converts values between host and
Internet network byte order.
ntohl, ntohs Converts values between Internet
network and host byte order.
inet_addr Returns a string representing an
Internet address.
inet_network Returns a string representing an
Internet network number.
inet_ntoa Converts Internet address into an
ASCII string.
inet_makeaddr Constructs an Internet address from a
Internet network number and a local
network address.
inet_lnaof Returns the local network address
number from an Internet address.
inet_netof Returns the network number from an
Internet address.
listen Listens for connections on a socket.
rcmd Allows execution of commands on a
remote host.
recv Receives a message from a connected
socket only.
recvfrom Receives a message from a socket.
recvmsg Receives a message from a socket.
resolver A set of functions that resolves
domain names. Contains the following
subroutines:
res_mkquery
res_send
res_init
dn_comp
dn_expand
getshort
putshort
putlong
rexec Allows command execution on a remote
host.
rresvport Obtains a socket with a privileged
address bound to it.
ruserok Provides authentication of remote
requests.
send Sends a message from a socket only
when socket is in connected state.
sento Sends a message from a socket.
sendmsg Sends a message from a socket.
shutdown Shuts down part or all of a full-
duplex connection.
socket Creates an endpoint for communications
and returns a descriptor.
socketpair Creates a pair of connected sockets.
Overview of Sockets
A socket is an object that provides communications
between processes. Sockets are referenced by file
descriptors and have qualities similar to those of a
character special device. Read, write, and select oper-
ations can be performed on sockets by using the appro-
priate system calls.
A socket is created with the socket subroutine. (See
"socket.") This subroutine creates a socket of a speci-
fied domain, type, and protocol. Sockets have different
qualities depending on these specifications.
A domain is a name space or an address space. Each
domain has different rules for valid names and interpre-
tation of names. After a socket is created, it can be
given a name, according to the rules of the domain in
which it was created.
AIX provides support for the following socket domains:
Local Provides socket communication between processes
running on the same AIX system when a domain of
AF_UNIX is specified. A name in this domain is
a string of ASCII characters whose maximum
length is machine dependent.
Internet Provides socket communication between a local
process and a process running on a remote host
when a domain of AF_INET is specified. This
domain requires that the IBM RT PC Interface
Program for use with TCP/IP be installed on
your system. A name in this domain is a DARPA
Internet address, made up of a 32-bit IP
address and a 16-bit port address. (See the
discussion of addresses and names in Interface
Program for use with TCP/IP.)
In AIX, there are two types of sockets:
SOCK_DGRAM Provides datagrams, which are
connectionless messages of a fixed maximum
length. This type of socket is generally
used for short messages, such as a name
server or time server, since the order and
reliability of message delivery is not
guaranteed.
In the local domain, SOCK_DGRAM is similar
to a message queue. In the Internet
domain, SOCK_DGRAM is implemented on the
UDP/IP protocol.
SOCK_STREAM Provides sequenced, two-way byte streams
with a transmission mechanism for out-of-
band data. The data is transmitted on a
reliable basis, in order.
In the local domain, SOCK_STREAM is like a
pipe. In the Internet domain, SOCK_STREAM
is implemented on the TCP/IP protocol.
A protocol is a standard set of rules for transferring
data, such as UDP/IP and TCP/IP. A protocol is specified
only if more than one protocol is supported for this par-
ticular socket type in this domain. Otherwise, this
parameter is set to 0.
SOCKET NAMES
A socket name, which is also called a socket address, is
specified by the sockaddr structure. This structure is
defined in the sys/socket.h header file, and it contains
the following members:
ushort sa_family; /* Defines socket address family */
char sa_data[14|; /* Contains up to 14 bytes of direct address */
The sa_family is the address family or domain, either
AF_UNIX for the local domain or AF_INET for the Internet
domain. The contents of sa_data depend on the protocol
in use, but generally a socket name consists of a machine
name part and a port or service name part.
RELATED NETWORK PUBLICATIONS
For general information about networking, the following
publications are recommended. These publications are
distributed by the Network Information Center on behalf
of the Defense Communications Agency and Defense Advanced
Research Projects Agency (DARPA). The mailing address
is:
Network Information Center
SRI International
Menlo Park, CA 92025
o Assigned Numbers, RFC990, J. Reynolds, J. Postel
o Broadcasting Internet Datagrams, RFC919, J. Mogul
o Domain Names - Concepts and Facilities, RFC882, P.
Mockapetris
o Domain Names - Implementation and Specification,
RFC883, P. Mockapetris
o File Transfer Protocol, RFC959, J. Postel
o Internet Control Message Protocol, RFC792, J. Postel
o Internet Name Server Protocol, IEN116, J. Postel
o Internet Protocol, RFC791, J. Postel
o Internet Standard Subnetting Procedure, RFC950, J.
Mogul
o Name/Finger, RFC742, K. Harrenstien
o Official ARPA-Internet Protocols, RFC944, J.
Reynolds, J. Postel
o Simple Mail Transfer Protocol, RFC821, J. Postel
o Telnet Binary Transmission, RFC856, J. Postel, J.
Reynolds
o Telnet Option Specifications, RFC855, J. Postel, J.
Reynolds
o Telnet Protocol Specification, RFC854, J. Postel, J.
Reynolds
o Telnet Terminal Type Option, RFC930, M. Solomon, E.
Wimmers
o The TFTP Protocol, RFC783, K. R. Sollins
o Time Protocol, RFC868, J. Postel, K. Harrenstien
o Transmission Control Protocol, RFC793, J. Postel
o Trivial File Transfer Protocol, RFC783, K. R. Sollins
o User Datagram Protocol, RFC768, J. Postel
Related Information
In this book: "accept," "bind," "connect," "
gethostbyaddr, gethostbyname, sethostent, endhostent
.*5a, gethostent," "gethostid, sethostid," "gethostname,
sethostname," "getnetent, getnetbyaddr, getnetbyname,
setnetent, endnetent," "getpeername," "getprotoent,
getprotobynumber, getprotobyname, setprotoent,
endprotoent," "getservent, getservbyname, getservbyport,
setservent, endservent," "getsockname," "getsockopt,
setsockopt," "htonl, htons, ntohl, ntohs," "inet_addr,
inet_network, inet_ntoa, inet_makeaddr, inet_lnaof,
inet_netof," "listen," "rcmd, rresvport, ruserok," "recv,
recvfrom, recvmsg," "resolver," "rexec," "send, sendto,
sendmsg," "shutdown," "socket," and "socketpair."