📄 udptime.cpp
字号:
/* UDPtime.cpp - main */#include <stdlib.h>#include <stdio.h>#include <time.h>#include <winsock.h>#define BUFSIZE 64#define WSVERS MAKEWORD(2, 0)#define WINEPOCH 2208988800 /* Windows epoch, in UCT secs */#define MSG "what time is it?\n"SOCKET connectUDP(const char *, const char *);void errexit(const char *, ...);/*------------------------------------------------------------------------ * main - UDP client for TIME service that prints the resulting time *------------------------------------------------------------------------ */intmain(int argc, char *argv[]){ char *host = "localhost"; /* host to use if none supplied */ char *service = "time"; /* default service name */ time_t now; /* 32-bit integer to hold time */ SOCKET s; /* socket descriptor */ int n; /* recv count */ WSADATA wsadata; switch (argc) { case 1: host = "localhost"; break; case 3: service = argv[2]; /* FALL THROUGH */ case 2: host = argv[1]; break; default: fprintf(stderr, "usage: UDPtime [host [port]]\n"); exit(1); } if (WSAStartup(WSVERS, &wsadata)) errexit("WSAStartup failed\n"); s = connectUDP(host, service); (void) send(s, MSG, strlen(MSG), 0); /* Read the time */ n = recv(s, (char *)&now, sizeof(now), 0); if (n == SOCKET_ERROR) errexit("recv failed: recv() error %d\n", GetLastError()); WSACleanup(); now = ntohl((u_long)now); /* put in host byte order */ now -= WINEPOCH; /* convert UCT to Windows epoch */ printf("%s", ctime(&now)); return 0; /* exit */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -