《Unix网络编程卷1-套接字联网API》linux 学习笔记一

编译第一个例子:

操作系统:

# uname -a
Linux localhost.localdomain 2.6.32-431.5.1.el6.x86_64 #1 SMP Wed Feb 12 00:41:43 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

#cat /proc/version
Linux version 2.6.32-431.5.1.el6.x86_64 (mockbuild@c6b10.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Wed Feb 12 00:41:43 UTC 2014


源码下载地址:  http://www.unpbook.com/

打开网页, 点击 Source Code -> Gzipped tar file (905630 bytes) 

获得下载文件 unpv13e.tar.gz

上传到服务器, 使用 tar -zxvf unpv13e.tar.gz  命令直接解压到当前目录


编译:

#cd unpv13e

#cat README

可以看到编译说明

按照编译说明执行 

#./configure

成功后最后几行如下

configure: creating ./config.status
config.status: creating Makefile
config.status: creating Make.defines
config.status: creating config.h


#cd lib

#make

成功后最后几行如下:

a - write_fd.o
a - writen.o
a - writable_timeo.o
ranlib ../libunp.a


# cd ../libfree/

# make

本人下到的版本会出现报错:

gcc -I../lib -g -O2 -D_REENTRANT -Wall   -c -o inet_ntop.o inet_ntop.c
inet_ntop.c: In function ‘inet_ntop’:
inet_ntop.c:61: error: argument ‘size’ doesn’t match prototype
/usr/include/arpa/inet.h:65: error: prototype declaration
make: *** [inet_ntop.o] Error 1

解决方案如下:

# vim inet_ntop.c

:60 (转到第60行)

把 size_t size; 改成 socklen_t size;

:wq (退出)

继续执行 #make

成功后显示:

a - in_cksum.o
a - inet_ntop.o
a - inet_pton.o
ranlib ../libunp.a

以上, 基本库算是编完了, 下面是编译例子


# cd ../intro

# make daytimetcpcli

gcc -I../lib -g -O2 -D_REENTRANT -Wall   -c -o daytimetcpcli.o daytimetcpcli.c
gcc -I../lib -g -O2 -D_REENTRANT -Wall -o daytimetcpcli daytimetcpcli.o ../libunp.a -lpthread

成功, 使用#ls指令, 可以看到当前目录下出现可执行文件 daytimetcpcli

#./daytimetcpcli 127.0.0.1

下面显示这样就表示成功了:

# ./daytimetcpcli 127.0.0.1
26 NOV 2014 21:16:24 CST ( 系统当前时间 )


出现 # ./daytimetcpcli 127.0.0.1 connect error: Connection refused 的解决办法:

# cd /etc/xinetd.d/

#ls

发现没有xinetd 服务, 安装xinetd

# yum install xinetd

出现 Is this ok [y/N]: y(输入y)

出现

Installed:
  xinetd.x86_64 2:2.3.14-39.el6_4
Complete!

后表示安装成功

# ls
chargen-dgram   daytime-dgram   discard-dgram   echo-dgram   rsync          time-dgram
chargen-stream  daytime-stream  discard-stream  echo-stream  tcpmux-server  time-stream

可以看到xinetd.d目录下出现上面列出的文件, 分别打开daytime-dgram和daytime-stream

第6行 disable     = yes

改成 disable     = no

保存, 退出文件编辑.


xinetd.d]# cd ..

etc]# cd init.d

init.d]# ls

可以在里面找到xinetd的执行文件( 和网上说的daytime不一样, 不知道是不是操作系统版本的原因)

执行 init.d]# ./xinetd start

显示 Starting xinetd:                                           [  OK  ] 表示成功


然后回到刚才的代码目录, 再执行# ./daytimetcpcli 127.0.0.1 就可以了.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值