码迷,mamicode.com
首页 > 其他好文 > 详细

《UNIX网络编程 卷1》之"学习环境搭建"(CentOS 7)

时间:2015-06-22 16:18:58      阅读:359      评论:0      收藏:0      [点我收藏+]

标签:

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

  1. 编译

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

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

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

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

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

1 cd ..   //回到 unpv13e 目录 
2 sudo cp libunp.a /usr/lib 
3 sudo cp libunp.a /usr/lib64 

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

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

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

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

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

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

1 ./daytimetcpcli 127.0.0.1

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

1 connect error:Connection refused

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

1 sudo cd /etc/xinetd.d/
2 sudo vim daytime

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

1 sudo yum install xinetd.x86_64

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

1 service xinetd restart

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

1 ./daytimetcpcli 127.0.0.1
2 22 JUN 2015 15:20:03 CST

 

  参考博文:

  《网络编程》关于 UNIX网络编程 卷1 的 unp.h 和源码编译问题

  Unix NetWork Programming——环境搭建(解决unp.h等源码编译问题)

  CentOS开启daytime服务器

 

《UNIX网络编程 卷1》之"学习环境搭建"(CentOS 7)

标签:

原文地址:http://www.cnblogs.com/xiehongfeng100/p/4593337.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!