计算机网络daytime实现之java/python/c++版本

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ygdxt/article/details/84502834

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://github.com/inspurer/ComputerNetwork/tree/master/daytime(java%20and%20c%2B%2B)/unpv13e
编译过程可以参考https://blog.csdn.net/michael_kong_nju/article/details/43272195

运行截图

服务端
在这里插入图片描述客户端在这里插入图片描述

注意事项

在ubuntu下编译该代码需要激活root模式,具体做法是,打开一个终端,输入

sudo passwd root

按照提示输入两遍一样的密码,设置root用户的密码,注意这个密码和开机密码不一样
如果已经激活,可以输入

su - 

再输入你设置的密码就可以登录root用户,如果登录之后你不知道怎么进入指定文件夹,灵活运用pwd(查看当前目录)和ls(查看子目录),看终端的信息,一般root后需要cd Desktopcd homecd (yourusername)之类的

按照上面的链接编译好之后,退出root模式可以用

exit

代码更新

daytime代码最新在我的githubhttps://github.com/inspurer/ComputerNetwork/tree/master/daytime

猜你喜欢

转载自blog.csdn.net/ygdxt/article/details/84502834