UNIX网络编程_1

一个简单的时间获取客户程序

本系统: Debian 12

如何下载源码并编译运行

官方源码地址:https://github.com/unpbook/unpv13e

git clone https://github.com/unpbook/unpv13e.git

克隆到本地之后,根据README文件一步一步make配置

接下来可以直接 make 想要运行的源码 然后执行即可

  • 一个问题:如何使用gcc来编译官方的源码

    首先把生成的静态库libudp.a 复制到系统依赖文件夹中

    1
    2
    3
    cd ..   //回到unpv13e目录  
    sudo cp libunp.a /usr/lib
    sudo cp libunp.a /usr/lib64

    然后修改unp.h并将其和config.h拷贝到/usr/include中,为了以后include方便

    1
    2
    3
    gedit lib/unp.h   //将unp.h中#include "../config.h"修改为#include "config.h"  
    sudo cp lib/unp.h /usr/include
    sudo cp config.h /usr/include

    然后就可以愉快的编译了:

    1
    2
    cd ./intro  
    gcc daytimetcpcli.c -o daytimetcpcli -lunp // 链接unp库
  • 同理,如果想要自己重新另建一个文件夹来编译运行的话

    首先要完成上面的步骤:静态库和头文件的拷贝

    然后就可以使用gcc daytimetcpcli.c -o daytimetcpcli -lunp 来运行了

  • 另一个问题:如何使用两台主机测试

    这里我使用的是阿里云服务器

    **关键就是你要在安全组里开放13端口(时间服务器端口),而不是进程的端口号 **

    这里测试的话你可以使用下面命令

    1
    2
    ping ipadress			# 使用ping命令测试本地主机能否连接服务器
    telnet ipaddress 13 # 使用telnet命令测试服务器端口是否正常开启

    你可以在云服务器中使用下面命令来开放监听端口

    1
    sudo ./daytimetcpsrv &

    然后在本地主机上使用下面命令来测试

    1
    ./daytimetcpcli ipaddress	# 这里替换为云服务器的ip地址

参考

unix网络编程:编译源代码相关的问题