最近开始学习网络编程,由于有Linux基础,所以选择了 UNIX网络编程卷1第三版作为主要阅读书籍,按照书上建议开始调试源程序,发现编译出错,通过查找相关网络资源,总结如下解决方法与各位朋友分享!
环境说明(应该也适用于其他Linux版本):
Linux系统: Ubuntu10.04
gcc 版本:gcc –version的结果 gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
最新版本Ubuntu14.04 下载:http://releases.ubuntu.com/14.04/
参考3中提供了 sys/event.h,sockio.h,ioccom.h等头文件下载, filio.h头文件没找到,这些文件不影响编译运行,filio.h参考了一个博客上提供的源码,见附录
步骤:
1.源码包下载地址:www.unpbook.com获取
2.将源码压缩包放入指定路径,如 /home/HostName/Socket/ 并解压
tar zxvf unpv13e.tar.gz
3. 按照如下步骤操作(解压后的根目录下 README中有说明):
./configure
cd lib
make
cd ../libfree/
make
cd ../libroute/ (可能因为环境不同编译有问题,如无 net/if_dl.h头文件等,可忽略)
make (由于本人按照README上的步骤并未成功,忽略几个文件夹的make)
接着,
cd ../intro/
make daytimetcpcli
./daytimetcpcli 127.0.0.1(提示connect error:Connection refused,daytime服务程序没开,可通过 inetd 或者 xinetd来实现对服务连接请求的控制)
make daytimetcpsrv (或者 make all即所有都编译)
./daytimetcpsrv &(让服务器端后台执行,这里是借助srv程序来开启系统的daytime服务程序,如果配置好 xinetd 则不需要这一步)
./daytimetcpcli 127.0.0.1
输出结果为:
SatApr 19 16:17:33 2014
但上述是通过 ./daytimetcpsrv & 开启了daytime 服务程序
下面是通过配置 xinetd 服务守护进程来实现 daytime的控制
root@gujinjin-desktop:/usr/include/sys# cd/etc/xinetd.d/
root@gujinjin-desktop:/etc/xinetd.d# ls
chargen daytime discard echo time
root@gujinjin-desktop:/etc/xinetd.d# vim daytime
红色标记为修改部分:
/*-------------------------------------------------------------------------------------------
service daytime
{
disable =no
type = INTERNAL
id = daytime-stream
socket_type = stream
protocol = tcp
user = root
wait = no
}
# This is the udp version.
service daytime
{
disable =no
type = INTERNAL
id = daytime-dgram
socket_type = dgram
protocol = udp
user = root
wait = yes
}
/*-------------------------------------------------------------------------------------------
重启 xinetd服务并运行客户端结果如下(红色部分):
root@gujinjin-desktop:/etc/xinetd.d#service xinetd restart
*Stopping internet superserver xinetd [ OK ]
*Starting internet superserver xinetd [ OK ]
root@gujinjin-desktop:/var/www/unpv13e/unpv13e/intro#ps
PIDTTY TIME CMD
2494pts/1 00:00:00 su
2503pts/1 00:00:00 bash
5977pts/1 00:00:00 ps
root@gujinjin-desktop:/var/www/unpv13e/unpv13e/intro#./daytimetcpcli 127.0.0.1
19 APR 2014 19:00:00 CST
参考1提供基本解决思路:http://bbs.chinaunix.net/thread-1075480-1-1.html
参考2 xinetd安装:http://www.360doc.com/content/12/0414/10/1162697_203478247.shtml
参考3 sys/*.h:http://www.oschina.net/code/explore/cygwin-1.7.7-1/newlib/libc/sys/linux/sys
参考4默认配置信息 http://blog.csdn.net/coolingcoding/article/details/7371131
参考5http://xingyunbaijunwei.blog.163.com/blog/static/7653806720114593218540/