第一步:先配置一下unp.h
http://awind.blog.51cto.com/4628868/861306
要开始接触网络编程,用的是大名鼎鼎的Unix Network Programming这本书,第一个例子就遇到困难了,unp.h没有,到谷歌上搜索了一下,找到了一些方法。先下载unpv13e.tar.gz,
1.解压下载的unpv13e.tar.gz文件
- tar -zxvf unpv13e.tar.gz
2。终端中进入unpv13e目录(需要给configure文件增加x权限)
- ./configure
- cd lib
- make
- cd ../libfree # continue building the basic library
- make
然后在unpv13e文件夹中成功生成libunp.a文件
3.将生成的libunp.a静态库复制到/usr/lib/中
- cd ..
- sudo cp libunp.a /usr/lib
4,修改unp.h并将其和config.h拷贝到/usr/include中,为了以后include方便
- kate lib/unp.h //将unp.h中#include "../config.h"修改为#include "config.h"
- sudo cp lib/unp.h /usr/include
- sudo cp config.h /usr/include
这里复制到/usr/include目录后,非root用户无权查看,记得chmod 744 一下
如果书写的程序出现err_sys()等err函数找不到的情况 这是因为steven大神对错误处理进行了封装 可以搜索apueerror.h这个文件(有兴趣的同学可以研究下封装代码 篇幅小不难的) 然后放入同上面第4步,apueerror.h拷贝到/usr/include中 ,接着再程序中 #include "apueerror.h"即可
至此环境搭建结束.
第二大步:
进入unpv13e 可以按照书上y用gcc编译运行了(里面有个makefile 可以在unpv13e目录里面直接make的吧?),运行的时候发现并没有时间显示,下面看:
http://blog.csdn.net/zxremail/article/details/4858714
运行书本中的程序。
1,首先,进入到Stevens的主页中下载原码
2,然后,编译程序,方法如下:
tar -zxvf unpv12e.tar.gz (-C dir)//解压文件
cd unpv12e
./configure # try to figure out all implementation differences
cd lib # build the basic library that all programs need
make # use "gmake" everywhere on BSD/OS systems
cd ../libfree # continue building the basic library
make
cd ../libgai # the getaddrinfo() and getnameinfo() functions
make
cd ../libroute # only if your system supports 4.4BSD style routing sockets
make # only if your system supports 4.4BSD style routing sockets
cd ../libxti # only if your system supports XTI
make # only if your system supports XTI
cd ../intro # build and test a basic client program
make daytimetcpsrv
make daytimetcpcli
此时会生成 daytimetcpsrv daytimetcpsrv.o daytimetcpcli daytimetcpcli.o
3、linux现在因为安全问题,各个发行版本默认是不开daytime服务的。
第一个例子实际上是两个程序,客户端和服务端,你很有可能只运行了客户端,没有运行服务端程序。
服务端程序在书上第12页……你不会尚还没有看到那里吧?
PS:由于要打开端口,所以服务端程序需要用root权限执行,所以你可以先
sudo ./daytimetcpsrv (如果本身就是root就不需要sudo)
然后再开一个终端运行 ./daytimetcpcli 127.0.0.1 就可以看到返回的时间了
我也正在学这本书,共同进步,拉拉手先