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

📄 timeclient.c

📁 daytime服务
💻 C
字号:
/*
使用方法:
程序名+服务器ip
如:
./client 192.168.1.2
程序将默认使用37端口,无法在执行时修改端口号,需要修改请修改PortNumber

注:在我电脑上编译后的可执行文件在别人电脑上出现过无法运行的问题,
并显示执行权限不够,至今没有弄清是什么问题。如果出现权限不够无法
执行,请在执行程序所在的电脑上重新编译源程序生成可执行文件解决。
*/
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<netdb.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<stdio.h>

int PortNumber=37; //指定time服务器端口号

int main(int argc,char *argv[]) 
{ 
int communfd; 
struct sockaddr_in servaddr; 
char buf[1024]; 
time_t tick,tick1; 
long c; 
long day,hour,minute,second; 

if(argc!=2) 
{ 
perror("Usage:client +server's_ip"); 
exit(1); 
} 

if((communfd=socket(AF_INET,SOCK_STREAM,0))==-1) //建立SOCKET,使用TCP
{ 
perror("socket error"); 
exit(1); 
} 

servaddr.sin_family=AF_INET; 
servaddr.sin_port=htons(PortNumber); //端口号
if((servaddr.sin_addr.s_addr=inet_addr(argv[1]))==INADDR_NONE) //填入服务器ip
{ 
perror("inet_addr error"); 
exit(1); 
} 
if(connect(communfd,(struct sockaddr*)&servaddr,sizeof(servaddr))==-1) //与服务器建立连接
{ 
perror("connect error"); 
exit(1); 
} 

if(read(communfd,&tick,sizeof(tick))<0)//用time_t形式读入服务器时间
{
perror("revieve tick error");
exit(1);
}
snprintf(buf,sizeof(buf),"%.24s\r\n",ctime(&tick));//格式化服务器时间
printf("\nserver time is:%s\n",buf);

tick1=time(NULL);//获得当前时间
snprintf(buf,sizeof(buf),"%.24s\r\n",ctime(&tick1));//格式化客户端时间
printf("client time is:%s\n",buf);

c=tick-tick1;//计算时间差
//printf("server's time-client's time=%ld seconds\n",c);
if(c>=0)//格式化时间差
{
day=c/(24*3600);
hour=(c%(24*3600))/3600;
minute=((c%(24*3600))%3600)/60;
second=((c%(24*3600))%3600)%60;
printf("server's time is %ld days %ld hours %ld minutes %ld seconds faster than client's\n",day,hour,minute,second);
}
else
{
c=-c;
day=c/(24*3600);
hour=(c%(24*3600))/3600;
minute=((c%(24*3600))%3600)/60;
second=((c%(24*3600))%3600)%60;
printf("server's time is %ld days %ld hours %ld minutes %ld seconds slower than client's\n",day,hour,minute,second);
}

close(communfd); //关闭socket
exit(0); 
} 

⌨️ 快捷键说明

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