Next: , Previous: TCP Connecting, Up: Using Networking

2.3 Troubleshooting Connection Problems

It may well be that for some reason the program shown in the previous example does not run on your machine. When looking at possible reasons for this, you will learn much about typical problems that arise in network programming. First of all, your implementation of gawk may not support network access because it is a pre-3.1 version or you do not have a network interface in your machine. Perhaps your machine uses some other protocol, such as DECnet or Novell's IPX. For the rest of this chapter, we will assume you work on a Unix machine that supports TCP/IP. If the previous example program does not run on your machine, it may help to replace the name ‘localhost’ with the name of your machine or its IP address. If it does, you could replace ‘localhost’ with the name of another machine in your vicinity—this way, the program connects to another machine. Now you should see the date and time being printed by the program, otherwise your machine may not support the ‘daytime’ service. Try changing the service to ‘chargen’ or ‘ftp’. This way, the program connects to other services that should give you some response. If you are curious, you should have a look at your /etc/services file. It could look like this:

     # /etc/services:
     # Network services, Internet style
     # Name     Number/Protocol  Alternate name # Comments
     echo        7/tcp
     echo        7/udp
     discard     9/tcp         sink null
     discard     9/udp         sink null
     daytime     13/tcp
     daytime     13/udp
     chargen     19/tcp        ttytst source
     chargen     19/udp        ttytst source
     ftp         21/tcp
     telnet      23/tcp
     smtp        25/tcp        mail
     finger      79/tcp
     www         80/tcp        http      # WorldWideWeb HTTP
     www         80/udp        # HyperText Transfer Protocol
     pop-2       109/tcp       postoffice    # POP version 2
     pop-2       109/udp
     pop-3       110/tcp       # POP version 3
     pop-3       110/udp
     nntp        119/tcp       readnews untp  # USENET News
     irc         194/tcp       # Internet Relay Chat
     irc         194/udp

Here, you find a list of services that traditional Unix machines usually support. If your GNU/Linux machine does not do so, it may be that these services are switched off in some startup script. Systems running some flavor of Microsoft Windows usually do not support these services. Nevertheless, it is possible to do networking with gawk on Microsoft Windows.1 The first column of the file gives the name of the service, and the second column gives a unique number and the protocol that one can use to connect to this service. The rest of the line is treated as a comment. You see that some services (‘echo’) support TCP as well as UDP.


[1] Microsoft preferred to ignore the TCP/IP family of protocols until 1995. Then came the rise of the Netscape browser as a landmark “killer application.” Microsoft added TCP/IP support and their own browser to Microsoft Windows 95 at the last minute. They even back-ported their TCP/IP implementation to Microsoft Windows for Workgroups 3.11, but it was a rather rudimentary and half-hearted implementation. Nevertheless, the equivalent of /etc/services resides under C:\WINNT\system32\drivers\etc\services on Microsoft Windows 2000 and Microsoft Windows XP.