📄 a_udptime_cli.cpp
字号:
/* Copyright is licensed under GNU LGPL. by I.J.Wang 2005 UDP client for time service Build: make a_udptime_cli*/#include "../src/wysockfile.h"#include "../src/wysockaddrinet4.h"#include "../src/wydate.h"#include "../src/wy_uty.h"static const time_t UNIX_EPOCH= 2208988800UL; static const char* syntax= "[Syntax]$./a_udpcli_time 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_DGRAM,0); const char TrigMsg[]="Request for time\n"; size_t tlen; if((r=sock.sendto(TrigMsg,sizeof(TrigMsg),0,&SvrAddr,tlen))!=Ok) { WY_THROW(r); } if(tlen!=sizeof(TrigMsg)) { WY_THROW( WyRet() ); } // read time_t time_t tm; WySockAddrINet4 taddr; if((r=sock.recvfrom(&tm,sizeof(tm),0,&taddr,tlen))!=Ok) { WY_THROW(r); } if(tlen!=sizeof(tm)) { Wy::cout << "Message not sizeof(time_t) bytes\n"; return(-1); } 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(taddr.ip()) << " port=" << taddr.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 + -