計算機網路daytime實現之java/python/c++版本
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 Desktop
、cd home
、cd (yourusername)
之類的
按照上面的連結編譯好之後,退出root模式可以用
exit
程式碼更新
daytime程式碼最新在我的githubhttps://github.com/inspurer/ComputerNetwork/tree/master/daytime