《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 目录
sudo cp libunp.a /usr/lib
sudo 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"
sudo cp lib/unp.h /usr/include
sudo 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 服务程序。

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

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

 sudo yum install xinetd.x86_64

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

 service xinetd restart

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

 ./daytimetcpcli 127.0.0.1
JUN :: CST

参考资料

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

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

  CentOS开启daytime服务器

《UNIX网络编程 卷1》之"学习环境搭建"(CentOS 7)的更多相关文章

  1. UNIX网络编程 卷2:进程间通信

    这篇是计算机类的优质预售推荐>>>><UNIX网络编程 卷2:进程间通信(第2版)> UNIX和网络专家W. Richard Stevens的传世之作 编辑推荐 两 ...

  2. [转载] 读《UNIX网络编程 卷1:套接字联网API》

    原文: http://cstdlib.com/tech/2014/10/09/read-unix-network-programming-1/ 文章写的很清楚, 适合初学者 最近看了<UNIX网 ...

  3. UNIX网络编程卷1 - >环境搭建(ubuntu16.04)

      学习unp网络编程,树上的例子均存在#include“unp.h”,故需要对环境进行配置. 1.到资源页下载www.unpbook.com 2.解压并将unpv13e移动到相应的文件夹下 (因为我 ...

  4. 【unp】unix网络编程卷1-->环境搭建(ubuntu14.04)

    学习unp网络编程,树上的例子均存在#include "unp.h",故需要对环境进行配置. 1. 到资源页下载unpv13e 2. 解压并将unpv13e 移动到相应的文件夹下 ...

  5. UNIX网络编程卷1 第一章 简介 读书笔记。

    基本没讲什么,一点点计算机网络发展史,一点点socket()简单介绍,最重要的是1.3节协议无关性. 协议无关性: 贯穿整本书的一个重要特性,他主要强调的是 socket是网络协议无关的编程接口. s ...

  6. 《Unix网络编程卷1:套接字联网API》读书笔记

    第一部分:简介和TCP/IP 第1章:简介 第2章:传输层:TCP.UDP和SCTP TCP:传输控制协议,复杂.可靠.面向连接协议 UDP:用户数据报协议,简单.不可靠.无连接协议 SCTP:流控制 ...

  7. 《UNIX网络编程 卷1:套接字联网API》读书笔记(一):网络编程简介

    概述 要编写通过计算机网络通信的程序,首先要确定这些程序相互通信所用的协议.大多数网络是按照划分成客户和服务器来组织的.本章及后续章节的焦点是TCP/IP协议族,也可称为网际协议族.下图为客户与服务器 ...

  8. 第一篇:《UNIX 网络编程 第二版》编译环境的搭建

    第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 第三步:解压下载到的包并放在用户主目录中 第四步:进入包内并执行以下命令 su ...

  9. UNIX网络编程卷2进程间通信读书笔记(二)—管道 (1)

    一.管道 管道的名称很形象,它就像是一个水管,我们从一端到水然后水从令一端流出.不同的是这里说的管道的两边都是进程.从一端往管道里写数据,其它进程可以从管道的另一端的把数据读出,从而实现了进程间通信的 ...

随机推荐

  1. Ajax+Struts2实现验证码验证功能

    ---------------------------------------------------------------------------------------------------- ...

  2. Android的Spinner控件用法解析

    微调框 微调框提供一种方法,让用户可以从值集中快速选择一个值.默认状态下,微调框显示其当前所选的值. 触摸微调框可显示下拉菜单,其中列有所有其他可用值,用户可从中选择一个新值. 您可以使用 Spinn ...

  3. Python Tkinter小试

    前两天看到一篇关于Python使用Tkinter 的博文,写的很好.就拿来研究了一下,改了改.现分享如下: 参考 代码 # coding:utf8 # python2.73 winxp ''''' 天 ...

  4. vbs注册表增删改

    vbs注册表增删改非常简单.过去竟然能忍受那么多次手动在注册表编辑器操作...应该认真反思自己的懒惰了. Dim op Set op=WScript.CreateObject("WScrip ...

  5. Python动态展现之一

    首先: def f(): print('first') def g(): f() g() def f(): print('second') g() 结果: >>> first sec ...

  6. 详解EBS接口开发之采购订单导入

    采购订单常用标准表简介 1.1   常用标准表 如下表中列出了与采购订单导入相关的表和说明: 表名 说明 其他信息 po.po_headers_all 采购订单头 采购订单号,采购类型,供应商,地点, ...

  7. storm消费kafka实现实时计算

    大致架构 * 每个应用实例部署一个日志agent * agent实时将日志发送到kafka * storm实时计算日志 * storm计算结果保存到hbase storm消费kafka 创建实时计算项 ...

  8. linux中Cron定时任务系统命令详解

    分类:Linux VPS教程 作者:阿川 发布时间:October 13, 2011 有很多同学在购买VPS之后,需要用到计划任务.但是又对计划任务不太了解,所以.今天我们的帮助中心主要是给大家提供一 ...

  9. shell入门之函数应用

    最近在学习shell编程,文中若有错误的地方还望各位批评指正. 先来看一个简单的求和函数 #!/bin/bash #a test about function f_sum 7 8 function f ...

  10. How to migrate data from another Mac using Mountain Lion and earlier

    链接:http://support.apple.com/zh-cn/HT4889