《UNIX网络编程 卷1》一、环境配置

引言

之前做的客户端开发主要重难点在于业务逻辑的抽象与实现,而服务端开发对技术的要求更高。遂开始学习《UNIX网络编程 卷1:套接字联网API(第3版)》,敦促自己坚持。

本书源码可以在官网或者图灵社区免费获取

环境:macOS 10.13.1

环境配置

./configure

cd lib
make

cd ../libfree
make

此处报错:

$ make
gcc -I../lib -g -O2 -D_REENTRANT -Wall   -c -o in_cksum.o in_cksum.c
gcc -I../lib -g -O2 -D_REENTRANT -Wall   -c -o inet_ntop.o inet_ntop.c
inet_ntop.c:56:1: error: conflicting types for 'inet_ntop'
inet_ntop(af, src, dst, size)
^
/usr/include/arpa/inet.h:77:13: note: previous declaration is here
const char      *inet_ntop(int, const void *, char *, socklen_t);
                 ^
1 error generated.
make: *** [inet_ntop.o] Error 1

提示inet_ntop重复声明了,其实是头文件重复包含了,本想将/usr/include/arpa/inet.h中该行注释掉,无奈权限问题解决不了。于是按照网上办法将inet_ntop.c文件#include <arpa/inet.h>这行注释掉,重新make即可。

接下来拷贝unp.h 文件及其对应的静态链接库 libunp.a 到 系统目录

cd ..   // 回到主目录

// 修改unp.h
gedit lib/unp.h    // 修改 #include "../config.h" 为 #include "config.h"

// 拷贝头文件
sudo cp config.h /usr/local/include
sudo cp lib/unp.h /usr/local/include

// 拷贝库文件
sudo cp libunp.a /usr/local/lib

// 接下来我们就可以编译书中的一些例子了,可以使用库文件链接 -lunp
// 如:gcc daytimetcpcli.c -o daytimetcpcli -lunp

示例代码

编译书中的第一个示例代码intro/daytimetcpcli.c

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

执行

./daytimetcpcli 129.6.15.28

58072 17-11-15 14:30:54 00 0 0 606.1 UTC(NIST) * 

如果对时服务器IP不可用,可查询http://tf.nist.gov/tf-cgi/servers.cgi

参考

UNIX网络编程(第3版)环境搭建——使用MAC OSX10.10
UNIX网络编程之一:代码环境搭建
《UNIX网络编程 卷1》之”学习环境搭建”(CentOS 7)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值