le code de livre de programmation de réseau unix a des bogues dus à l’ancien OS, comment résoudre ceci ou où obtenir le nouveau code?

J’essaie de télécharger et d’exécuter le code c sous Linux pour

Programmation réseau UNIX, Volume 1, Deuxième édition: API réseau: Sockets et XTI, Prentice Hall, 1998, ISBN 0-13-490012-X. C’est par W. Stevens Richard

http://kohala.com/start/unpv12e/unpv12e.tar.gz 

Mais, quand je construis le code, j’ai eu une erreur:

  gcc -g -O2 -D_REENTRANT -Wall -c -o connect_nonb.o connect_nonb.c In file included from connect_nonb.c:1: unp.h:114: error: redefinition of âstruct in_pktinfoâ make: *** [connect_nonb.o] Error 1 

J’ai commenté struct in_pktinfo. Puis j’ai eu de nouvelles erreurs:

  gcc -g -O2 -D_REENTRANT -Wall -c -o in_cksum.o in_cksum.c gcc -g -O2 -D_REENTRANT -Wall -c -o inet_ntop.o inet_ntop.c inet_ntop.c: In function âinet_ntopâ: inet_ntop.c:61: error: argument âsizeâ doesnât match prototype /usr/include/arpa/inet.h:67: error: prototype declaration make: *** [inet_ntop.o] Error 1 

Je ne veux pas déboguer pour l’ensemble des 575 fichiers un par un.

Où puis-je obtenir un nouveau code sans ces erreurs? le nouveau livre de version contient un code sans bogue?

L’ancien code est uniquement pour l’ancien système d’exploitation.

Merci

Eh bien, l’ auteur Richard Stevens est décédé en 1999 et le livre est toujours une très bonne référence. Vous ne pouvez pas en dire autant de plus de 10 ans de références techniques.

Je viens de chercher la source à partir de http://www.unpbook.com/unpv13e.tar.gz et j’ai suivi le readme, qui voulait essentiellement dire ./configure et call make dans les répertoires.

 /lib /libfree /intro 

J’ai corrigé un seul endroit (libfree / inet_ntop.c: 60 et changé de taille en socklen ) et il a été compilé sur mon Ubuntu actuel. Je ne l’ai pas fait fonctionner, mais j’espère qu’au moins la majeure partie du travail fonctionnera.

Les livres de Richard Stevens sont toujours remarquables et méritent le petit effort nécessaire pour faire fonctionner ses sources.