《UNIX网络编程 卷1》之源码使用方法(for Ubuntu-10.04)

xiaoxiao2021-02-28  72

  《UNIX网络编程 卷1》的源码可以从www.unpbook.com下载得到。解压之后的目录为unpv13e。

详细步骤

编译

  进入unpv13e目录,按如下步骤编译:

./configure cd lib make // 可能遇到问题:redefinition of ‘struct in_pktinfo’ cd ../libfree make cd ../libroute make //这一步可能会出错,可忽略,只是表示你的系统不支持 4.4BSD,并不影响对该书的学习 cd ../libgai make

  针对上边的问题‘redefinition of ‘struct in_pktinfo’,我们需要将unpv13e/key/unp.h及unpv13e/sctp/unp.h中的“struct in_pktinfo”结构体声明注释掉,因为它已经被包含在标准头文件bits/in.h中了。修改之后需要重新编译 。

  以上步骤会生成一个静态库libunp.a。

将生成的libunp.a静态库复制到/usr/lib/和/usr/lib64/中

cd .. //回到 unpv13e 目录 cp libunp.a /usr/lib cp libunp.a /usr/lib64

修改unpv13e/lib/unp.h并将其和config.h拷贝到/usr/include中

vim lib/unp.h //将 unp.h 中#include "../config.h"修改为#include "config.h" cp lib/unp.h /usr/include cp config.h /usr/include

运行示例(unpv13e/intro/daytimetcpcli.c)

  1)编译时必须加上静态链接库:-l 参数加上 libunp.a  去掉lib和后面的.a。最后得到参数-lunp

cd ./intro gcc daytimetcpcli.c -o daytimetcpcli -lunp

  2)测试上面生成的可执行文件获取本机当前日期:

./daytimetcpcli 127.0.0.1

  在进行测试时会出现以下错误:

connect error:Connection refused

  3)该错误表示 daytime 服务程序没开,可通过  xinetd来实现对服务连接请求的控制。以下通过 xinetd 开启 daytime 服务程序。

cd /etc/xinetd.d/ //或者根本没有这个目录 vim daytime

  如果xinetd.d文件夹是空的,则需要先安装xinetd服务:

apt-get install xinetd

  将 daytime-stream 和 daytime-dgram 两个文件中的 disable = yes 修改成 disable = no,并保存退出,然后重启 xinetd:

service xinetd restart

  4)再次测试该例子,能成功显示本机时间:

root@liujie-desktop:/unpv13e/intro# ./daytimetcpcli 127.0.0.1 03 SEP 2017 14:46:46 CST

 注意:

在《unix 网络编程》书中每段代码下面就有源码的位置信息。
转载请注明原文地址: https://www.6miu.com/read-56447.html

最新回复(0)