(gawk.info.gz) TCP/IP Networking
Info Catalog
(gawk.info.gz) Two-way I/O
(gawk.info.gz) Advanced Features
(gawk.info.gz) Profiling
11.4 Using `gawk' for Network Programming
=========================================
`EMISTERED':
A host is a host from coast to coast,
and no-one can talk to host that's close,
unless the host that isn't close
is busy hung or dead.
In addition to being able to open a two-way pipeline to a coprocess
on the same system ( Two-way I/O), it is possible to make a
two-way connection to another process on another system across an IP
network connection.
You can think of this as just a _very long_ two-way pipeline to a
coprocess. The way `gawk' decides that you want to use TCP/IP
networking is by recognizing special file names that begin with one of
`/inet/', `/inet4/' or `/inet6'.
The full syntax of the special file name is
`/NET-TYPE/PROTOCOL/LOCAL-PORT/REMOTE-HOST/REMOTE-PORT'. The
components are:
NET-TYPE
Specifies the kind of Internet connection to make. Use `/inet4/'
to force IPv4, and `/inet6/' to force IPv6. Plain `/inet/' (which
used to be the only option) uses the system default, most likely
IPv4.
PROTOCOL
The protocol to use over IP. This must be either `tcp', or `udp',
for a TCP or UDP IP connection, respectively. The use of TCP is
recommended for most applications.
LOCAL-PORT
The local TCP or UDP port number to use. Use a port number of `0'
when you want the system to pick a port. This is what you should do
when writing a TCP or UDP client. You may also use a well-known
service name, such as `smtp' or `http', in which case `gawk'
attempts to determine the predefined port number using the C
`getaddrinfo()' function.
REMOTE-HOST
The IP address or fully-qualified domain name of the Internet host
to which you want to connect.
REMOTE-PORT
The TCP or UDP port number to use on the given REMOTE-HOST.
Again, use `0' if you don't care, or else a well-known service
name.
NOTE: Failure in opening a two-way socket will result in a
non-fatal error being returned to the calling code. The value of
`ERRNO' indicates the error ( Auto-set).
Consider the following very simple example:
BEGIN {
Service = "/inet/tcp/0/localhost/daytime"
Service |& getline
print $0
close(Service)
}
This program reads the current date and time from the local system's
TCP `daytime' server. It then prints the results and closes the
connection.
Because this topic is extensive, the use of `gawk' for TCP/IP
programming is documented separately. See (General
Introduction)Top gawkinet, TCP/IP Internetworking with `gawk', for a
much more complete introduction and discussion, as well as extensive
examples.
Info Catalog
(gawk.info.gz) Two-way I/O
(gawk.info.gz) Advanced Features
(gawk.info.gz) Profiling
automatically generated by
info2html