📄 a_tcptime_cli.cpp
字号:
/* Copyright is licensed under GNU LGPL. by I.J.Wang 2005 TCP client for time service Build: a_tcptime_cli*/#include "../src/wysockfile.h"#include "../src/wysockaddrinet4.h"#include "../src/wydate.h"#include "../src/wy_uty.h"const time_t UNIX_EPOCH= 2208988800UL;static const char* syntax= "[Syntax]$./a_tcptime_cli ip port\n" " ip = server ip in dotted-decimal notation\n" " port= port number\n";int main(int argc, char* argv[])try { WyRet r; uint16_t port; const char* SvrIP; // convert argv[1] to URL and argv[2] to port number if(argc==3) { SvrIP=argv[1]; if((r=Wy::_strnum(port,NULL,argv[2]))!=Ok) { WY_THROW(r); } } else { if(argc!=1) { Wy::cout << syntax; return(-1); } port=37; SvrIP="127.0.0.1"; } // setup socket and send message (unspedified) to the server const WySockAddrINet4 SvrAddr(SvrIP,port); WySockFile sock(PF_INET,SOCK_STREAM,0); const char TrigMsg[]="Request for time\n"; size_t tlen; if((r=sock.connect(SvrAddr))!=Ok) { WY_THROW(r); } sock << TrigMsg; // read time_t time_t tm; if((r=Wy::full_read(sock,&tm,sizeof(tm),tlen))!=Ok) { WY_THROW(r); } tm=ntohl(tm)-UNIX_EPOCH; // convert the time_t as in the local time zone and print it const WyDate date(Wy::local_tzname(), WyTimeSpec(tm,0)); Wy::cout << "Time from " << "ip=" << Wy::wrd(SvrAddr.ip()) << " port=" << SvrAddr.port() << '\n' << Wy::wrd(date) << "\n\n"; return(0);}catch(const WyRet& e) { if(e!=Ok) { Wy::cerr << Wy::wrd(e) << '\n'; } return e->c_repcode();}catch(...) { Wy::cerr << "main caught(...)\n"; return(-1);};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -