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 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 ../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 daytimetcpcli
    ./daytimetcpcli 127.0.0.1

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老A的AI实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值