zoukankan      html  css  js  c++  java
  • 《UNIX网络编程》第一步:编写自己的daytime客户端,并从daytime服务器获取时间

    编写自己的daytime客户端,并从daytime服务器获取时间

    @Author:CSU张扬

    @Email:csuzhangyang@gmail.com or csuzhangyang@qq.com

    时间匆忙,可能有小错误。有任何问题,可以反馈给我,本人提供解决。

    更多资源,可移步www.faker.top

    仅供个人学习,未经授权的情况下禁止转载和盈利行为

    1. 首先下载《UNIX网络编程》配套源代码

    源代码地址:http://www.unpbook.com/

    本站下载链接:
    unpv13e.tar


    2. 复制到虚拟机内(以Ubuntu系统为例),并解压。

    解压命令:tar zxvf unpv13e.tar.gz


    以下加粗部分的代码块 均为要在终端执行的命令

    3. 在终端进入unpv13e目录。

    • 终端执行 ./configure

      如果出错,先执行命令 chmod +x configure ,再执行 ./configure

    • 进入lib目录 cd lib ,并执行命令 make

    • 返回上一级目录 cd .. ,并进入libfree目录 cd libfree ,再执行 make(这一步可能会有error,没关系,只要在unpv13e文件夹中生成了libunp.a文件就可以)
      最终会在unpv13e文件夹中生成libunp.a文件


    4. 将libunp.a文件复制到/usr/lib/

    • 返回到unpv13e目录, cd ..
    • 执行复制命令,sudo cp libunp.a /usr/lib

    5. 修改unpv13e/lib/unp.h,并将它和unpv13e/config.h拷贝到/usr/include中

    • 用vim编辑unp.h, vim lib/unp.h, 将*#include "…/config.h"修改为#include “config.h”*

    • 拷贝unp.h, sudo cp lib/unp.h /usr/include

    • 拷贝configure.h, sudo cp config.h /usr/include


    6.安装xinetd服务

    • Ubuntu系统中:执行命令, apt install xinetd
    • Centos系统中:执行命令, yum -y install xinetd*

    7. 执行daytime客户端

    • 找到文件daytimetcpcli.c,在unpv13e/intro目录中,利用cd命令进入该目录。

    • 编译该文件, gcc daytimetcpcli.c -lunp

    • 会生成a.out文件,再执行 ./a.out 127.0.0.1,获取本机时间。

    如果出现错误: connect error:Connection refused,表示daytime服务器程序没设置好。

    Ubuntu系统的解决办法:

    • 找到/etc/xinetd.d目录,cd /etc/xinetd.d

    • 用vim编辑daytime文件,sudo vim daytime(要用超级用户权限才可以修改,因此要加上sudo)

    • daytime文件中的两个disable = yes 改为 disable = no,保存退出vim。

    • 重启xinetd服务,执行命令,service xinetd restart

    • 此时再次执行步骤7。

    Centos系统的解决办法:

    • 找到/etc/xinetd.d目录,cd /etc/xinetd.d

    • 将daytime-stream和daytime-dgram两个文件中的disable = yes 均改为 disable = no。用vim编辑这两个文件,sudo vim daytime-streamsudo vim daytime-dgram(要用超级用户权限才可以修改,因此要加上sudo)。

    • 回到主目录,cd ~。重启xinetd服务,执行命令,/etc/init.d/xinetd restart

    • 此时再次执行步骤7。


    8. 注

    • daytime服务器有许多种,127.0.0.1只是本机地址时间,可以更换别的服务器。
    • 目前手头只有Ubuntu 18系统和Centos6.8系统,因此只有这两个系统的教程。

    9. 结果


    在这里插入图片描述

  • 相关阅读:
    Parameter Binding in ASP.NET Web API
    Which HTTP methods match up to which CRUD methods?
    ErrorHandling in asp.net web api
    HttpStatusCode
    Autofac Getting Started(默认的构造函数注入)
    Autofac Controlling Scope and Lifetime
    luvit 被忽视的lua 高性能框架(仿nodejs)
    undefined与null的区别
    VsCode中使用Emmet神器快速编写HTML代码
    字符串匹配---KMP算法
  • 原文地址:https://www.cnblogs.com/MagicConch/p/12179171.html
Copyright © 2011-2022 走看看