В коде книги сетевого программирования unix есть ошибки из-за старой ОС, как решить эту проблему или где взять новый код? - PullRequest
5 голосов
/ 31 октября 2011

Я пытаюсь загрузить и запустить код c в Linux для

Сетевое программирование в UNIX, том 1, второе издание: сетевые API-интерфейсы: сокеты и XTI, Prentice Hall, 1998, ISBN 0-13-490012-ИКС.Это У. Стивенс Ричард

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

Но, когда я строю код, я получил ошибку:

  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

Я закомментировал struct in_pktinfo.Затем я получил новые ошибки:

   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

Я не хочу отлаживать все 575 файлов один за другим.

Где я могу получить новый код без этих ошибок?новая версия книги имеет код без ошибок?

Старый код предназначен только для старых ОС.

Спасибо

1 Ответ

11 голосов
/ 17 февраля 2012

хорошо, Автор Ричард Стивенс скончался в 1999 году, и Книга по-прежнему является очень хорошим справочным материалом. Вы не можете сказать это о многих более чем 10-летних технических ссылках.

Я только что извлек источник из http://www.unpbook.com/unpv13e.tar.gz и последовал за readme, который в основном означал запустить . / Configure и вызвать make в каталогах

/lib
/libfree
/intro

Я исправил одно место (libfree / inet_ntop.c: 60 и изменил размер на socklen ), и оно скомпилировано на моем текущем Ubuntu. Я не запускал его, но я верю, что, по крайней мере, большинство из них будет работать.

Ричард Стивенс книги по-прежнему выдающиеся и стоят небольшого усилия, необходимого для поддержания работы своих источников.

...