daytimetcpsrv.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <time.h> int main(int argc,char **argv)
{
int listenfd,connfd;//监听套接字,连接套接字
struct sockaddr_in servaddr;
char buff[1024];
time_t ticks; //创建监听套接字
listenfd=socket(AF_INET,SOCK_STREAM,0); // 填写网际套接字地址
//bzero相对于memset 更加好记,只有两个参数。 Berkeley函数和ANSI C标准函数
bzero(&servaddr,sizeof(servaddr));//清空结构推荐使用memset函数,bzero函数已过时,速度慢
servaddr.sin_family=AF_INET;//协议
//htonl htons 字节排序函数
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);//任意主机网络接口中连接服务器
servaddr.sin_port=htons(10000);//绑定端口 //绑定套接字
bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr)); //Listen 函数把该套接字转换成监听套接字
listen(listenfd,10); //等待连接
printf("Waiting connection!\n"); for(;;)
{
//阻塞,投入睡眠,等待某个客户连接的到达并被内核接受。TCP使用三次握手建立连接,握手完毕时accept返回,只时一个已连接描述符
connfd=accept(listenfd,(struct sockaddr *)NULL,NULL);
ticks=time(NULL);
snprintf(buff,sizeof(buff),"%.24s\r\n",ctime(&ticks));//ctime把整数值转换成直观可读的时间格式
//写到buff缓冲区,并不等于已经发送给对方,等缓冲区处理完之前的数据后,开始传送缓冲区内容
write(connfd,buff,strlen(buff));
close(connfd);
}
}
//补充知识:
//------------------------
//字节操纵函数  <strings.h>
//Berkeley函数
//bzero bcopy bcmp ---以上仅仅列出函数名
//ANSI C 函数
//*memset *memcpy memcmp
//------------------------

  daytimetcpcli.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(int argc,char **argv)
{
int sockfd,n;
char recvline[1024];
struct sockaddr_in servaddr; if(argc!=2)
{printf("参数有误!\n");return -1;} if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{printf("套接字创建失败!\n");return -1;} //指定服务器的IP地址和端口
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;//协议
servaddr.sin_port =htons(10000);//端口
//inet_pton地址转换(ASCII 字符串 与 网络字节序的二进制之间转换网际地址) P表达->N数值
if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr)<=0)//IP地址有参数获得argv[1],argv[0]->当前程序
{printf("inet_pton error for ");return -1;} //进行连接到服务器
if(connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0)
{printf("connect error");return -1;} //读数据
while( (n=read(sockfd,recvline,1024))>0){
recvline[n]=0;
if(fputs(recvline,stdout)==EOF)//将recvline中的数据输出到标准输出
{printf("fputs error");return -1;}
} if(n<0)printf("read error"); exit(0);
}

  
输出结果:
服务器端:
xx@xxxxxx:~/Public/C$ ./daytimetcpsrv.out 
Waiting connection!

客户机端:
xx@xxxxxx:~/Public/C$ ./daytimetcpcli.out 127.0.0.1
Sat Jun  4 09:28:33 2016

Socket入门-获取服务器时间实例的更多相关文章

  1. Unity 获取服务器时间 HTTP请求方式

    在写每日签到的时候,我居然使用的是本地时间...被项目经理笑哭了...., 如果你在写单机游戏,没有游戏服务器,但又不想使用本地时间,就可以采用下面方法. 方法总结: 1. 使用HTTP请求获取服务器 ...

  2. JS实现Ajax---例:获取服务器时间

    Ajax在本质上是一个浏览器端的技术 XMLHttpRequest XMLHttpRequest对象 XMLHttpRequest对象在IE浏览器和非IE浏览器中创建的方法不同. 简而言之:它可以异步 ...

  3. php获取服务器时间的代码

    php获取服务器时间的代码. 用php的date函数即可来获取服务器上的时间:  <?php //将时区设置为中国 date_default_timezone_set("PRC&quo ...

  4. Javascript获取服务器时间

    //获取服务器时间 var getServerDate = function () {     var xmlHttpRequest = null,     serverDate = new Date ...

  5. JS获取服务器时间并且计算距离当前指定时间差的函数

    项目中遇到了从服务器获取时间,现在记录一下方便以后查询: 1.后台代码:(创建一个date对象并以JSON的形式返回去) // 获取服务器时间 public String getNowServerTi ...

  6. JS 中获取服务器时间的注意点

    在通过js获取服务器时间时,遇到了小小的问题,但造成的影响挺大的,所以写出来提醒大家,在获取服务器时间时一定要细心要多测试多验证. js 中使用以下方法获取服务器时间时要注意两点: 1.xhr.ope ...

  7. JS中new Date()用法及获取服务器时间

    1.获取服务器时间: var now = new Date($.ajax({async: false}).getResponseHeader("Date")); 2.new Dat ...

  8. JavaScript or JQuery 获取服务器时间

    用js做时间校正,获取本机时间,是存在bug的. 使用js也可获取到服务器时间,原理是使用 ajax请求,返回的头部信息就含有服务器端的时间信息,获取到就可以了(有的IE下扔不会正常获取,还是更建议走 ...

  9. 获取服务器时间ajax

    $.ajax({ type:"OPTIONS", url:"/", complete:function(x){ // alert(x.getResponseHe ...

随机推荐

  1. SgmlReader使用方法

    HtmlAgilityPack是一个开源的html解析器,底层是通过将html格式转成标准的xml格式文件来实现的(使用dot net里的XPathDocument等xml相关类),可以从这里下载:h ...

  2. VBS操作Excel常见方法

    VBS操作Excel常见方法 作者: 字体:[增加 减小] 类型:转载 时间:2009-11-13我要评论 VBS控制Excel常见方法,需要的朋友可以参考下. dim oExcel,oWb,oShe ...

  3. Convert和Parse对null值处理的区别

    类型的转换在日常的变成中是经常被用到的,我们最常用的类型转换的方法就是Convert和Parse, 下面来说一下这两者null值处理的区别. int i1 = Convert.ToInt32(null ...

  4. 零散知识记录-一个MQ问题

    [背景]我有一项零散工作:维护大部门的一台测试公用MQ服务器.当大部分MQ被建立起来,编写了维护手册,大家都按照规程来后,就基本上没有再动过它了.周五有同学跟我反映登录不进去了,周日花了1个小时来解决 ...

  5. nodejs中的Crypto模块

    我是属于实用型的选手,千万别问我过多原理性的东西,我只知道,这个是最好的,我就用它. http://cnodejs.org/topic/504061d7fef591855112bab5

  6. jquery hasClass、removeClass、addClass方法

    hasClass(class) 检查当前的元素是否含有某个特定的类,如果有,则返回true. 参数: class:用于匹配的类名. ---------------------------------- ...

  7. jqurey 遍历 div内的所有input单选复选按钮并判断是否选中及Attr(checked)无效的解决

    关于页面前面标签 <ul> @{ foreach (var item in vote) { if (!string.IsNullOrEmpty(item.Img)) { <li cl ...

  8. linux中的服务

    一.服务分类 独立的服务比如像httpd服务,用户可以直接来访问.并且独立服务常驻内存.而xinetd服务是一个服务管理器,它是常驻内存的,它下面有很多子服务,但这些子服务并不长驻内存.当用户想要使用 ...

  9. 2、面向对象以及winform的简单运用(面向对象的四大基本特性)

    面向对象的四大基本特性 面向对象的核心概念就是封装.抽象.继承.多态这四大基本特性,在这里先解释一下它们的定义: 封装:是一种隐藏信息的特性.找到变化并且把它封装起来,你就可以在不影响其它部分的情况下 ...

  10. 每天一个linux命令(32):wc命令

    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...