⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a_udptime_svr.cpp

📁 一个不错
💻 CPP
字号:
/* Copyright is licensed under GNU LGPL.                 by I.J.Wang 2005 UDP server for time service Build: make a_udptime_svr*/#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_udptime_svr port\n";int main(int argc, char* argv[])try { if(argc!=2) {   Wy::cout << syntax;   return(-1); } WyRet r; uint16_t port; // convert argv[1] as the port number and save into port if((r=Wy::_strnum(port,NULL,argv[1]))!=Ok) {   WY_THROW(r); } // setup server socket WySockFile svr_sock(PF_INET,SOCK_DGRAM,0); const WySockAddrINet4 SvrAddr(INADDR_ANY,port); if((r=svr_sock.bind(SvrAddr))!=Ok) {   WY_THROW(r); } // endless loop: respond each incoming message by writing current time back for(;;) {   WySockAddrINet4 taddr;   char rbuf[256];   size_t rlen;   if((r=svr_sock.recvfrom(rbuf,sizeof(rbuf)-1,0,&taddr,rlen))!=Ok) {     WY_THROW(r);   }   rbuf[rlen]=0;  // forming zero-terminate string   Wy::cout << "Connection from " << Wy::wrd(taddr.ip())            << " (" << taddr.port() << "): "            << rbuf << '\n';   // get current time into time_t and write it back   const WyTimeSpec tm_now( Wy::now() );   time_t tm(tm_now.second()+UNIX_EPOCH);   tm=htonl(tm);   if((r=svr_sock.sendto(&tm,sizeof(tm),0,&taddr,rlen))!=Ok) {     Wy::cerr << Wy::wrd(r) << '\n';   }   if(rlen!=sizeof(tm)) {     Wy::cerr << "sendto bytes is not " << sizeof(tm) << "\n";   } } // UNREACHABLE return(0);}catch(const WyRet& e) { if(e!=Ok) {   Wy::cerr << Wy::wrd(e) << '\n'; } return e->c_repcode();}catch(...) { Wy::cerr << "unknown throw type\n"; return(-1);};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -