UNIX Network Programming making files problem

I have started reading the book Unix Network Programming, Volume 1: The Sockets Networking API. I downloaded all the source code and the readme says I must make the files.

zuro@zuro:~/book/unpv12e$ cd lib

zuro@zuro:~/book/unpv12e/lib$ make

gcc -g -O2 -D_REENTRANT -Wall   -c -o connect_nonb.o 
connect_nonb.c

In file included from connect_nonb.c:1:0:
unp.h:114:8: error: redefinition of �struct in_pktinfo'
 struct in_pktinfo {
        ^
In file included from /usr/include/netinet/in.h:37:0,
                 from unp.h:17,
                 from connect_nonb.c:1:
/usr/include/x86_64-linux-gnu/bits/in.h:127:8: note: originally defined here
 struct in_pktinfo
        ^
make: *** [connect_nonb.o] Error 1

zuro@zuro:~/book/unpv12e/lib$ 

Its like that for all the files. I'm running Kubuntu Linux, not sure if this problem is because of that or not.
I got the source code from ftp . gnu . org / gnu / autoconf

That is the source for autoconf, not whatever's in your book.

We can't possibly help you without seeing the code.

[edit] You can get code for the third edition of your book here. All the examples in 'intro' except byteorder.c build cleanly on my Linux system, and 'byteorder' can be fixed by changing this line

               printf("sizeof(short) = %d\n", sizeof(short));

into this line

               printf("sizeof(short) = %ld\n", sizeof(short));

Building 'libfree', etc, etc, is not likely to work since Linux already has all these functions, causing multiple definition / incompatible declaration / etc kind of errors.

Opps wrong source code. The file with the source is:
http:// www. unpbook .com/src. html

---------- Post updated at 03:46 PM ---------- Previous update was at 03:31 PM ----------

How do you build them?
I tried to just go into the dir and type make, for example with ping. The problem is when I typed make I got errors.

zuro@zuro:~/book/unpv12e/ping$ make
gcc -g -O2 -D_REENTRANT -Wall   -c -o main.o main.c
In file included from ping.h:1:0,
                 from main.c:1:
unp.h:114:8: error: redefinition of �struct in_pktinfo�
 struct in_pktinfo {
        ^
In file included from /usr/include/netinet/in.h:37:0,
                 from unp.h:17,
                 from ping.h:1,
                 from main.c:1:
/usr/include/x86_64-linux-gnu/bits/in.h:127:8: note: originally defined here
 struct in_pktinfo
        ^
make: *** [main.o] Error 1

And with gcc same thing

zuro@zuro:~/book/unpv12e/intro$ gcc daytimetcpcli1.c -o daytime
In file included from daytimetcpcli1.c:1:0:
unp.h:114:8: error: redefinition of �struct in_pktinfo�
 struct in_pktinfo {
        ^
In file included from /usr/include/netinet/in.h:37:0,
                 from unp.h:17,
                 from daytimetcpcli1.c:1:
/usr/include/x86_64-linux-gnu/bits/in.h:127:8: note: originally defined here
 struct in_pktinfo
        ^


I don't get that error. Did you run ./configure before trying to build any of this?

I get a different error... The code appears extremely broken anywhere except the system they wrote it on, not to mention quite extremely old. They even admit they didn't bother making it portable on the download page.

Yes I did run ./configure. By "system they wrote it on" you mean Unix right? Should I do this all on Unix?

UNIX is not an operating system. I think they used some sort of BSD, but odds are good BSD has also changed a lot in the 10-to-20 years since these things were updated.

If you wanted to learn modern networking, you'd do better to find modern examples.