Unix网络编程:从入门到放弃——一个简单的时间获取程序

《Unix网络编程》两卷备受赞誉,另外四本传世经典《TCP/IP详解》(3卷)和《Unix环境高级编程》更是让W.Richard Stevens如同神一般的存在。最近入手了其中两本《Unix网络编程》准备开启网络编程的学习之旅。


书本配套源码地址:http://www.unpbook.com/src.html

编译环境:Ubuntu16.04-64

首先解压源文件,打开主文件夹下README文件,上面有源代码编译步骤。


===============

Execute the following from the src/ directory:

./configure    # try <span class="hljs-keyword">to</span> figure <span class="hljs-keyword">out</span> all implementation differences

cd lib         # <span class="hljs-keyword">build</span> the basic <span class="hljs-keyword">library</span> that all programs need
make           # <span class="hljs-keyword">use</span> <span class="hljs-string">"gmake"</span> everywhere <span class="hljs-keyword">on</span> BSD/OS systems

cd ../libfree  # continue building the basic <span class="hljs-keyword">library</span>
make

cd ../libroute # <span class="hljs-keyword">only</span> <span class="hljs-keyword">if</span> your <span class="hljs-keyword">system</span> supports <span class="hljs-number">4.4</span>BSD <span class="hljs-keyword">style</span> routing sockets
make           # <span class="hljs-keyword">only</span> <span class="hljs-keyword">if</span> your <span class="hljs-keyword">system</span> supports <span class="hljs-number">4.4</span>BSD <span class="hljs-keyword">style</span> routing sockets

cd ../libxti   # <span class="hljs-keyword">only</span> <span class="hljs-keyword">if</span> your <span class="hljs-keyword">system</span> supports XTI
make           # <span class="hljs-keyword">only</span> <span class="hljs-keyword">if</span> your <span class="hljs-keyword">system</span> supports XTI

cd ../intro    # <span class="hljs-keyword">build</span> <span class="hljs-keyword">and</span> <span class="hljs-keyword">test</span> a basic <span class="hljs-keyword">client</span> program
make daytimetcpcli
./daytimetcpcli <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>

If all that works, you’re all set to start compiling individual programs.

Notice that all the source code assumes tabs every 4 columns, not 8.

MORE DETAILS
============

在终端用tree -L 1看一下源码的结构:

.
├── aclocal.m4
├── advio
├── bcast
├── config.guess
├── config.h
├── config.h.in
├── config.log
├── config.status
├── config.sub
├── configure
├── configure.in
├── debug
├── DISCLAIMER
├── icmpd
├── inetd
├── install-sh
├── intro
├── ioctl
├── ipopts
├── key
├── lib
├── libfree
├── libgai
├── libroute
├── libunp.a
├── Make.defines
├── Make.defines.in
├── Makefile
├── Makefile.in
├── mcast
├── mysdr
├── names
├── nonblock
├── oob
├── ping
├── README
├── route
├── rtt
├── sctp
├── select
├── server
├── sigio
├── sock
├── sockopt
├── sparc64-unknown-freebsd5.1
├── ssntp
├── streams
├── tcpcliserv
├── test
├── threads
├── traceroute
├── udpcksum
├── udpcliserv
├── unixdomain
└── VERSION

首先执行./configure进行整体配置,再进入lib目录执行make命令即可,中间的三步分别进入libfree/libroute/libxti执行make可以省略,最后进入intro文件夹执行make daytimetcpcli命令,若直接执行./daytimetcpcli 127.0.0.1会出现:

connect error: Connection refused的错误。因为linux系统默认关闭daytime服务,所以需要手动开启。

再次用tree命令查看intro文件夹文件结构:

.
├── byteorder
├── byteorder.c
├── byteorder.o
├── daytimetcpcli
├── daytimetcpcli1
├── daytimetcpcli1.c
├── daytimetcpcli1.o
├── daytimetcpcli2
├── daytimetcpcli2.c
├── daytimetcpcli2.o
├── daytimetcpcli3
├── daytimetcpcli3.c
├── daytimetcpcli3.o
├── daytimetcpcli.c
├── daytimetcpcli.o
├── daytimetcpcliv6
├── daytimetcpcliv6.c
├── daytimetcpcliv6.o
├── daytimetcpsrv
├── daytimetcpsrv1
├── daytimetcpsrv1.c
├── daytimetcpsrv1.o
├── daytimetcpsrv2
├── daytimetcpsrv2.c
├── daytimetcpsrv2.o
├── daytimetcpsrv3
├── daytimetcpsrv3.c
├── daytimetcpsrv3.o
├── daytimetcpsrv.c
├── daytimetcpsrv.lc
├── daytimetcpsrv.o
├── daytimetcpsrvv6
├── daytimetcpsrvv6.c
├── daytimetcpsrvv6.o
├── Makefile
├── truss.solaris.2.6
└── truss.unixware.2.1

在intro文件夹下重现开启一个终端,执行sudo ./daytimetcpsrv即可打开daytime服务。

此时,在原终端再次执行./daytimetcpcli 127.0.0.1,可以返回系统当前时间:

Mon Apr  3 16:52:13 2017

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值