Ubuntu利用TCP协议来获取服务器时间的方法
这里使用Unix网络编程里面的一个小程序,该客户端建立一个到服务器的TCP连接,然后读取由服务器以直观可读格式简单地送回的当前时间和日期.
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 vi /etc/xinetd.d/daytime
找到这一行,然后把yes改成no
测试本机
结果为:
24 OCT 2014 00:39:36 CST
那么要想测试互联网上服务器的daytime,首先得找到支持用TCP协议返回时间的服务器.测试了一些可能的主机,发现有一些可以返回,一些超时或者拒绝访问。
可能的主机列表如下,就是windows下右下角时间同步的那个列表。

这里使用dig指令来解析域名
time.microsoft.akadns.net.
64.4.10.33
运行程序尝试获取时间
./daytimetcpcli 64.4.10.33
第一次
第二次
换个服务器
[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 25.04 Beta 发布:Linux 6.14 内核
Canonical公司近日发布了Ubuntu 25.04 Beta版,这一版本被赋予了一个活泼的代号——“Plucky Puffin”(勇敢的海雀),据悉,正式的稳定版预计将在2025年4月17日与广大用户2025-03-29
如何让 Ubuntu 居中显示窗口? 3种方法实现Ubuntu窗口居中显示
个人习惯不管打开终端窗口还是文件管理器窗口,都希望居中显示,不太喜欢Linux下自动随意的摆放位置,下面我们就来看看详细设置方法2025-03-11
Ubuntu 24.04.2 LTS 正式发布: 带来全新硬件支持启用堆栈HWE
buntu 24.04 LTS 的第 2 个小版本Ubuntu 24.04.2 LTS 正式发布,出了修复漏洞以外,它还带来了全新的硬件支持启用堆栈(HWE),让系统性能和硬件兼容性更上一层楼2025-02-25
怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧
Ubuntu Linux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看下文介绍2025-01-20
高效管理你的Linux系统: Debian操作系统常用命令指南
在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使用和管理Debian系统2025-01-20
debian更新系统的命令怎么用? 轻松配置Debian自动更新的技巧
Debian不手动更新怎么体验新系统?Debian提供了一个既简单又高效的解决办法——自动更新,该怎么用呢?详细请看下文介绍2025-01-20
如何配置Ubuntu无人值守升级? 手动操作实现Ubuntu自动升级技巧
无人值守升级是一个用于自动更新 Debian 和 Ubuntu 系统的开源项目,该项目的主要目的是确保系统能够定期自动安装安全更新,从而保持系统的安全性和稳定性2025-01-20
Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法
Warp是一款使用Rust开发的现代化AI 终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程2025-01-20
Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法
Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debian系统中,有几种不同的方法可以查看版本信息2025-01-17
解决VMware中Ubuntu虚拟机鼠标闪烁或指针位置不正确的方案
刚下载虚拟机后,电脑在虚拟机内出现了鼠标闪烁或者鼠标指针位置不对的问题,该怎么解决呢?下面我们就来看看详细教程2025-01-09







最新评论