• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Ubuntu利用TCP协议来获取服务器时间的方法

      这里使用Unix网络编程里面的一个小程序,该客户端建立一个到服务器的TCP连接,然后读取由服务器以直观可读格式简单地送回的当前时间和日期.


    复制代码
    代码如下:
    #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); /* daytime server */
    if (inet_pton(AF_INET, argv[1], servaddr.sin_addr) = 0)
    err_quit("inet_pton error for %s", argv[1]);
    if (connect(sockfd, (SA *) servaddr, sizeof(servaddr)) 0)
    err_sys("connect error");
    while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
    recvline[n] = 0; /* null terminate */
    if (fputs(recvline, stdout) == EOF)
    err_sys("fputs error");
    }
    if (n 0)
    err_sys("read error");
    exit(0);
    }  

      然后我们运行这个程序若干次,每次以不同的IP地址作为命令行参数.

      首先我们测试本机的时间,你必须要先打开Linux下的daytime服务,方法如下


    复制代码
    代码如下:
      sudo apt-get install xinetd
      sudo vi /etc/xinetd.d/daytime

      找到这一行,然后把yes改成no   


    复制代码
    代码如下:
       (disable = yes) -> (disable = no)sudo /etc/init.d/xinetd restart

      测试本机


    复制代码
    代码如下:
      root@ubuntu:/home/jiang/UNP_STUDY/unpv13e/intro# ./daytimetcpcli 127.0.0.1

      结果为:

      24 OCT 2014 00:39:36 CST

      那么要想测试互联网上服务器的daytime,首先得找到支持用TCP协议返回时间的服务器.测试了一些可能的主机,发现有一些可以返回,一些超时或者拒绝访问。

      可能的主机列表如下,就是windows下右下角时间同步的那个列表。

      

      这里使用dig指令来解析域名


    复制代码
    代码如下:
      dig time.windows.com +short
      time.microsoft.akadns.net.

      64.4.10.33

      运行程序尝试获取时间

      ./daytimetcpcli 64.4.10.33

      第一次


    复制代码
    代码如下:
      connect error: Connection timed out

      第二次


    复制代码
    代码如下:
      connect error: Connection refused

      换个服务器

    [code]  dig time.nist.gov
      ./daytimetcpcli 128.138.141.172[code]

      结果

      56953 14-10-23 16:46:39 11 0 0   0.0 UTC(NIST) *
      可以看直观的看出来,当地的时间为下午4点钟. 

    上一篇:Ubuntu 14.10 “Utopic Unicorn”正式发布(附下载)
    下一篇:安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Ubuntu利用TCP协议来获取服务器时间的方法 Ubuntu,利用,TCP,协议,来,获取,