Node:TCP/IP Networking, Next:Portal Files, Previous:Two-way I/O, Up:Advanced Features
gawk for Network ProgrammingEMISTERED: 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 (see Two-Way Communications with Another Process), it is possible to make a two-way connection to another process on another system across an IP networking 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 /inet/.
The full syntax of the special file name is
/inet/protocol/local-port/remote-host/remote-port.
The components are:
tcp,
udp, or raw, for a TCP, UDP, or raw IP connection,
respectively. The use of TCP is recommended for most applications.
Caution: The use of raw sockets is not currently supported
in version 3.1 of gawk.
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 getservbyname function.
0 if you don't care, or else a well-known
service name.
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 TCP/IP Internetworking with gawk,
which comes as part of the gawk distribution,
for a much more complete introduction and discussion, as well as
extensive examples.