前言
如果你这段时间过得很舒服,那就证明你荒废了一段时间。如果你这段时间过得很辛苦,那么恭喜,你又进步了。最近入党的事情忙得焦头烂额,博客也拖了好久没写,主要也是因为要装 xinetd 服务一直没装好,Mac 上也无法编译多个文件,于是我还特意租了一个月服务器。OK,现在来实现客户端连接主机,从主机获取时间。
Server
passiveTCP.c
1 | /* passiveTCP.c - passiveTCP */ |
passivesock.c
1 | /* passivesock.c - passivesock */ |
TCPdaytimed.c
1 | /* TCPdaytimed.c - main */ |
客户端链接服务器时,服务器获取时间然后将获取到的秒数通过 ctime() 函数转换成标准格式返回给客户端。
Client
connectsock.c
1 | /* connectsock.c - connectsock */ |
connectTCP.c
1 | /* connectTCP.c - connectTCP */ |
TCPdaytime.c
1 | /* TCPdaytime.c - TCPdaytime, main */ |
默认连接的两个主机都是 localhost ,如果输入主机地址,则同时连接 localhost 和目标主机,获取到两台主机的时间。为了比较两台主机之间的时间差,一开始我想着服务器直接返回秒数,但是要转换成字符串才能返回就放弃了。通过 strptime()按照特定时间格式将字符串转换为时间类型,然后通过 mktime()将时间转换为自1970年1月1日以来持续时间的秒数,这样就可以进行运算了。
编译运行
编译运行 server:
将 server 上传到服务器:
1 | $ scp /Users/pengzhendong/Code/Lab3/client root@114.215.101.30:/root |
连接服务器开启服务:
开启客户端,分别只连接 localhost 和同时连接两台服务器: