ctime()函数解决思路

ctime()函数
linux

convert UCT to UNIX epoch


#define UNIXEPOCH 2208988800UL /* UNIX epoch, in UCT secs

这个是 服务器 端
  (void) time(&now);
   
  now = htonl((unsigned long)(now +UNIXEPOCH));
  send(clientfd, (char *)&now,sizeof(now), 0);

这个是 客户端

n = read(s, (char *)&now, sizeof(now));
now = ntohl((unsigned long)now); /* put in host order */
now -= UNIXEPOCH; /* convert UCT to UNIX epoch */
printf("now--------------%s", ctime(&now));





UNIXEPOCH 2208988800UL 是什么 为什么 服务器加上减去他 客户端 减去他

------解决方案--------------------
不知道,等于没做任何事情,可以在服务端加上一句ctime比较一下两端的结果,按道理说什么也没发生过。
------解决方案--------------------
感觉如果客户端和服务端都在unix上,加与不加都是一样的。因为unix上是从1970-01-01 00:00.00开始的。
2208988800是1970-01-01 00:00.00距离1900-01-01 00:00.00的秒数。
http://www.faqs.org/rfcs/rfc868.html
------解决方案--------------------
这个应该还有其他PC系统的客户端
------解决方案--------------------
简单的搜索方法:unix epoch utc
让你清楚的明白这一切的来龙去脉
------解决方案--------------------
探讨

是不是 time(&now)得到的是 距离1970年的秒数,ctime把这个秒数化成现在的时间数,但是由于ctime是从1900年开始的所以要加上一个偏移量引用:

感觉如果客户端和服务端都在unix上,加与不加都是一样的。因为unix上是从1970-01-01 00:00.00开始的。
2208988800是1970-01-01 00:00.00距离1900-0……