daytime介绍
有一个有用的调试工具就是daytime服务。它的作用就是返回当前时间和日期,格式是字符串格式。
基于TCP的daytime服务
daytime服务是基于TCP的应用,服务器在TCP端口13侦听,一旦有连接建立就返回ASCII形式的日期和时间,在传送完后关闭连接。接收到的数据被忽略。
基于UDP的daytime服务
daytime服务也可以使用UDP协议,它的端口也是13,不过UDP是用数据报传送当前时间的。接收到的数据被忽略。
daytime之java实现
代码
/**
* Ubuntu下编写自己的DAYTIME客户端,并在互联网上找一个DAYTIME服务器连接,
* 验证结果,打印代码和运行的输出结果。
* www.unpbook.com
*/
import java.io.*;
import java.net.*;
public class daytimetest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String sHostName;
/*
* Get the name of the server from the command line. No entry,use
* tock.usno.navy.mil
*/
if(args.length>0){
sHostName = args[0];
}
else{
//"www.time.ac.cn" 或 "time.nist.gov"
sHostName = "time.nist.gov";
}
/*
* Opeb a socket to port 13. Prepare to receive the Daytime information.
*/
try{
Socket oSocket = new Socket(sHostName,13);
InputStream oTimeStream =oSocket.getInputStream();
StringBuffer oTime = new StringBuffer();
// Fetch the Daytime information.
int iCharacter;
while((iCharacter = oTimeStream.read()) != -1){
oTime.append((char)iCharacter);
}
// Convert Daytime to a String and output.
String sTime = oTime.toString().trim();
System.out.println("It's:" + sTime + "at " + sHostName + ".");
oTimeStream.close();
oSocket.close();
}catch (UnknownHostException e){
System.err.print(e);
}catch (IOException e){
System.err.print(e);
}
}
}
运行截图
daytime之python实现
代码
import socket
HOST = "time.nist.gov"
PORT = 13
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
client.connect((HOST,PORT))
data = client.recv(1024)
#字节转字符串
time = str(data,encoding='utf-8')
print("the server's time is:",time)
except Exception as e:
print('Error!')
运行截图
daytime之c++实现
代码是从unpbook.com上下载的,已上传到我的github:传送门
编译过程可以参考https://blog.csdn.net/michael_kong_nju/article/details/43272195
运行截图
服务端
客户端
注意事项
在ubuntu下编译该代码需要激活root模式,具体做法是,打开一个终端,输入
sudo passwd root
按照提示输入两遍一样的密码,设置root用户的密码,注意这个密码和开机密码不一样
如果已经激活,可以输入
su -
再输入你设置的密码就可以登录root用户,如果登录之后你不知道怎么进入指定文件夹,灵活运用pwd
(查看当前目录)和ls
(查看子目录),看终端的信息,一般root后需要cd Desktop
、cd home
、cd (yourusername)
之类的
按照上面的链接编译好之后,退出root模式可以用
exit
代码更新
daytime代码最新在我的githubhttps://github.com/inspurer/ComputerNetwork/tree/master/daytime%E6%9C%8D%E5%8A%A1