📄 client.c
字号:
#define SA struct sockaddr
#include"time.h"
#include "curses.h"
#include "stdlib.h"
#include "stdio.h"
#include "errno.h"
#include "netdb.h"
#include "string.h"
#include "sys/time.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "netinet/in.h"
#include "memory.h"
#include "stdarg.h"
#include "syslog.h"
#define UNIXEPOCH 2208988800UL /* UNIX epoch, in UCT secs */
#define MSG "what time is it?\n"
int daemon_proc;
static void err_doit(int errnoflag,int level,const char * fmt,va_list ap)
{
int errno_save,n;
char recvline[MAXLINE];
errno_save = errno;
#ifdef HAVE_VSNPRINTF
vsnprintf(recvline,sizeof(recvline),fmt,ap);
#else
vsprintf(recvline,fmt,ap);
#endif
n = strlen(recvline);
if(errnoflag)
snprintf(recvline + n,sizeof(recvline) -n,":%s",strerror(errno_save));
strcat(recvline,"\n");
if(daemon_proc){
syslog(level,recvline);
}else{
fflush(stdout);
fputs(recvline,stderr);
fflush(stderr);
}
return;
}
err_sys(const char * fmt,...)
{
va_list ap;
va_start(ap,fmt);
err_doit(1,LOG_ERR,fmt,ap);
va_end(ap);
exit(1);
}
err_quit(const char * fmt,...)
{
va_list ap;
va_start(ap,fmt);
err_doit(0,LOG_ERR,fmt,ap);
va_end(ap);
exit(1);
}
/* Define bzero() as a macro if it's not in standard C library. */
#ifndef HAVE_BRZEO
#define bzero(ptr,n) memset(ptr,0,n)
#endif
int main(int argc,char * * argv)
{
int sockfd;
time_t localtime;//本机时间
time_t now;//服务端时间
struct sockaddr_in servaddr;
if(argc != 2)
err_quit("usage:a.out<IPaggress>");
if((sockfd = socket(AF_INET,SOCK_STREAM,0))<0)//创建套接字
err_sys("socket error");
bzero(&servaddr,sizeof(servaddr));//初始化套接字
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(37);
if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr) <= 0)
err_quit("inet_pton error for %s",argv[1]);
if(connect(sockfd,(SA *)&servaddr,sizeof(servaddr)) < 0)//连接服务端
err_sys("connect error");
(void) write(sockfd, MSG, strlen(MSG));//向服务器发请求
localtime=time(NULL);//本机时间
read(sockfd, (char *)&now, sizeof(now));//接受回应
now = ntohl((unsigned long)now); /* put in host order */
now -= UNIXEPOCH; /* convert UCT to UNIX epoch */
if(now > localtime )
{
printf("server time is long");
dtime = now - localtime ;
printf("d%",dtime);
printf("than local time");
}
else if(now < localtime )
{
printf("local time is long");
dtime = localtime - now ;
printf("d%",dtime);
printf("s than server time");
}
else
printf("equal\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -