unix网络编程书代码因旧操作系统有bug,如何解决这个问题或在哪里获取新代码?

use*_*288 5 c unix linux networking

我试图在Linux上下载并运行c代码

UNIX网络编程,第1卷,第2版:网络API:套接字和XTI,Prentice Hall,1998,ISBN 0-13-490012-X.这是由W.史蒂文斯理查德

 http://kohala.com/start/unpv12e/unpv12e.tar.gz
Run Code Online (Sandbox Code Playgroud)

但是,当我构建代码时,我得到了错误:

  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
Run Code Online (Sandbox Code Playgroud)

我注释掉了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
Run Code Online (Sandbox Code Playgroud)

我不想一个接一个地调试整个575文件.

没有这些错误,我在哪里可以获得新代码?新版本书有无错误的代码?

旧代码仅适用于旧操作系统.

谢谢

Jör*_*yer 11

好吧,作者理查德史蒂文斯于1999年去世,书仍然是一个非常好的参考.关于很多超过10年的技术参考,你不能这么说.

我刚刚从http://www.unpbook.com/unpv13e.tar.gz获取源代码,并按照自述文件进行操作,这基本上意味着运行./configure并在目录中调用make

/lib
/libfree
/intro
Run Code Online (Sandbox Code Playgroud)

我修复了一个地方(libfree/inet_ntop.c:60并将大小更改为socklen)并在我当前的Ubuntu上编译.我没有运行它,但我相信至少大部分都可以运行.

理查德史蒂文斯的书仍然很出色,值得为保持他的资源运行所需的微小努力.

  • 应该注意:在第60行,将**size_t**更改为**socklen_t**...愚蠢的错误,但我认为Jörg指的是变量名,而不是类型! (6认同)