GNU Info

Info Node: (gawk.info)TCP/IP Networking

(gawk.info)TCP/IP Networking


Next: Portal Files Prev: Two-way I/O Up: Advanced Features
Enter node , (file) or (file)node

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 (*note Two-Way Communications with Another Process:
Two-way I/O.), 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 meaning of
the components are:

PROTOCOL
     The protocol to use over IP.  This must be either `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'.

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 pre-defined port number using the C
     `getservbyname' 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.

   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.  Note: Top, for a much more
complete introduction and discussion, as well as extensive examples.


automatically generated by info2www version 1.2.2.9