c - unix 网络编程书籍代码由于旧操作系统而存在错误,如何解决这个问题或从哪里获得新代码?

标签 c linux unix networking

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

UNIX 网络编程,第 1 卷,第二版:网络 API:套接字和 XTI,Prentice Hall,1998 年,ISBN 0-13-490012-X。作者是 W. Stevens Richard

 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个文件。

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

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

谢谢

最佳答案

嗯,Author Richard Stevens于 1999 年去世,这本书仍然是非常好的引用资料。对于许多 10 多年前的技术引用资料,您不能这样说。

我刚刚从 http://www.unpbook.com/unpv13e.tar.gz 中获取了源代码并遵循自述文件,这基本上意味着运行 ./configure 并在目录中调用 ma​​ke

/lib
/libfree
/intro

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

Richard Stevens 的书仍然很出色,值得为保持他的资源运行所需的小努力。

关于c - unix 网络编程书籍代码由于旧操作系统而存在错误,如何解决这个问题或从哪里获得新代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7947960/

相关文章:

c - 从链表中不兼容的指针类型赋值?

c - 等到上一个进程实例完成

java - 异常 : java.net.SocketException:打开的文件太多

java - 使用opencv进行人脸检测不起作用

linux - 将源目录中的所有文件归档到 xyz.gz 文件中,并使用 UNIX shell 脚本将其移动到目标目录

c - 带互斥同步的 Pi 计算器

c++ - 转换为科学计数法时出现 double 错误

C 中的构造函数 - 声明(在 .h 中)和定义(在 .c 中)它的行为不符合预期

c - 如何使用 NativeCall 处理可变参数

linux - g++ 搜索/lib/../lib/,然后搜索/lib/