• 《UNIX网络编程》daytimetcpcli测试


    对于刚刚接触网络的人来说,《UNIX网络编程》中第一个例子(daytimetcpcli)可能就测试不通过。也许你试着继续向后读来,自己写一个服务程序来解决这个问题,但是daytime服务也是标准服务的一个例子。你也可以对公网中的daytime服务器进行连接测试。

    下面先给出源代码,然后介绍如何查找daytime服务器。

    源代码

    代码如下:

    #include "unp.h"
    
    int main(int argc, char **argv)
    {
        int sockfd, n;
        char recvline[MAXLINE + 1];
        struct sockaddr_in servaddr;
    
        if (argc != 2)
            err_quit("usage: a.out <IPaddress>");
    
        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
            err_sys("socket error");
    
        bzero(&servaddr, sizeof(servaddr));
    
        servaddr.sin_family = AF_INET;
        servaddr.sin_port = htons(13);
    
        if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
            err_quit("inet_pton error for %s", argv[1]);
    
        if (connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0)
            err_sys("connect error");
    
        while ((n = read(sockfd, recvline, MAXLINE)) > 0)
        {
            recvline[n] = 0;
            if (fputs(recvline, stdout) == EOF)
                err_sys("fputs error");
        }
    
        if (n < 0)
            err_sys("read error");
    
        return 0;
    }
    

    查找daytime服务器

    可以在自己的机器上安装daytime服务,不过枫竹梦没有成功。

    下面介绍如何查看有daytime服务的服务器。通过google搜索来的一些daytime服务器,不是连接超时,就是拒绝服务。由于电脑都会有自己校准时间的功能,推测应该是连接远程的daytime服务。如下网址可以进行测试:

    • time-a.nist.gov
    • time.windows.com
    • time.nist.gov
    • time-nw.nist.gov
    • timepb.nist.gov

    由于上面的程序不能自己的解析域名的地址,所有手动来处理。使用dig命令来解析域名。

    $ ./daytimetcpcli 206.168.112.96
    connect error: Connection timed out
    $ dig time.nist.gov +short
    ntp1.glb.nist.gov.
    128.138.141.172
    $ ./daytimetcpcli 128.138.141.172
    
    57308 15-10-13 08:34:28 20 0 0 942.1 UTC(NIST) * 
    $ 

    如上的测试成功了,可以继续学习了。

    更多请参考网络编程

  • 相关阅读:
    Zabbix 添加内存告警
    Oracle Drop 表数据恢复
    Kubernetes port-forward
    Jenkins指定tag发布到k8s环境
    Jenkins系列之六——拉取指定branch或tag
    MySQL5.7 报错 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement
    docker部署常见应用
    Vim 中进行文件目录操作
    Oracle使用expdp/impdp迁移数据
    UmengAppDemo【友盟统计SDK集成以及多渠道打包配置,基于V7.5.3版本】
  • 原文地址:https://www.cnblogs.com/furzoom/p/7710291.html
Copyright © 2020-2023  润新知