Socket编程获取服务器时间
客户端向服务器端发送请求,服务器收到请求做相应的处理,将处理结果传回客户端。下面采用TCP协议实现服务器和客户端之间的连接。
1. 客户端
约定双方的传输协议(UDP或者TCP),根据传输协议创建socket;
服务器的IP地址和端口号;
连接服务器;
获取服务器传递回来的数据。
#include<string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <time.h>
#include <fcntl.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include <sys/errno.h>
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
const int MAXLINE=1024;
int main(int argc,char** argv)
{ int sockfd,n; char recvline[MAXLINE+1]; struct sockaddr_in servaddr; if(argc!=2) { cout<<"usage: a.out<IPaddress"<<endl; exit(0); } sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd<0) { cout<<"socket error"<<endl; exit(0); } memset(&servaddr,0, sizeof(servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_port=htons(8080);//将无符号短整型数值转换为网络字节序,即将数值的高位字节存放到内存中的低位字节0X1234变为0X3412 if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr)<=0)//将ip地址在“点分十进制”和整数之间转换 { cout<<"inet_ptons error"<<endl; exit(0); } if(connect(sockfd,(sockaddr*)&servaddr,sizeof(servaddr))<0) { cout<<"connect error"<<endl; exit(0); } while((n=read(sockfd,recvline,MAXLINE))>0) { recvline[n]=0; if(fputs(recvline,stdout)==EOF) { cout<<"fputs error"<<endl; exit(0); } } if(n<0) { cout<<"read error"<<endl; exit(0); } exit(0);
}
2. 服务器
约定双方的传输协议(UDP或者TCP),根据传输协议创建socket;
将地址和端口绑定到socket;
对端口进行侦听,直到侦听到有连接信息;
接收连接,然后将数据写回连接中。
将地址和端口绑定到socket
#include<string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <time.h>
#include <fcntl.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include <sys/errno.h>
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<errno.h>
using namespace std; const int MAXLINE=1024;
int main(int argc,char **argv)
{ int listenfd,connfd; struct sockaddr_in servaddr; char buff[MAXLINE]; time_t ticks; listenfd=socket(AF_INET,SOCK_STREAM,0);//建立socket if(listenfd<0) { cout<<"socket error "<<strerror(errno)<<endl; exit(0); } memset(&servaddr,0, sizeof(servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_port=htons(8080); servaddr.sin_addr.s_addr=htonl(INADDR_ANY); int bindfd=bind(listenfd,(sockaddr*)&servaddr,sizeof(servaddr));//将地址和端口绑定到socket if(bindfd<0) { cout<<"bind error"<<bindfd<<endl; exit(0); } listen(listenfd,MAXLINE);//监听连接,一直阻塞,直到有连接出现 while(1) { connfd=accept(listenfd,(sockaddr*)NULL,NULL);//接收连接传递的数据 ticks=time(NULL); snprintf(buff,sizeof(buff),"%.24s\r\n",ctime(&ticks)); cout<<strlen(buff)<<endl; write(connfd,buff,strlen(buff));//将传递的数据写回到socket中 close(connfd); } return 0;
}
Socket编程获取服务器时间相关推荐
- linux socket 时间,Socket编程获取服务器时间
2. 服务器 约定双方的传输协议(UDP或者TCP),根据传输协议创建socket: 将地址和端口绑定到socket: 对端口进行侦听,直到侦听到有连接信息: 接收连接,然后将数据写回连接中. 将地址 ...
- 【python编程】利用python获取服务器时间
在某些特殊应用中,需要与特定网站的服务器时间保持一致,才能更准确地交互. 如何获取服务器? 利用网络请求和响应.响应头中含有服务器的date信息,只需稍加调整就能获取服务器时间.上代码: import ...
- js取服务器系统时间,JS中new Date()用法及获取服务器时间
1.获取服务器时间: var now = new Date($.ajax({async: false}).getResponseHeader("Date")); 2.new Dat ...
- html页面获取服务器时间,[html]定时获取服务器时间和本地时间
[html]定时获取服务器时间和本地时间 2018-11-1 萧 写技术 .time_div{width:100%; padding:10px; text-align:center; margin:5 ...
- 抢购网站服务器时间表,js获取服务器时间,实现抢购倒计时
商品抢购倒计时,涉及到一个问题,就是时间的准确性,如果使用本地手机或者电脑的时间,就会存在时间不准以及误差,并且还有时区问题 解决方法:使用服务器的时间 困难:但是我们不能每秒钟请求一次服务器,这肯定 ...
- Python表示不甘心,汤姆大叔送书,Python抢书之毫秒级跟进--获取服务器时间
@鲜宏大牛果断使用js将抢书的误差提高到毫秒级, wid表示真心的很佩服鲜宏大牛! wid的水平虽说不怎么样, 但内心说, wid也想尝试着将抢书的误差提高到毫秒级, 思考了一会, 还真有思路了! 现 ...
- 网页获取服务器时间,通过AFNetworking获取服务器时间
在一些场合,我们需要获取服务器的时间,计算该时间与客户端本地时间的差值,以利于时间同步.有人说,这个不是很简单吗,让后台的TX给你一个获取服务器时间的接口就行了. 其实这个还是比较麻烦的,更简单的是利 ...
- android获取服务器时间格式,Android 获取服务器与客户端时差的实例代码
一般我们在做商品倒计时的时候会遇到要从后台获取商品的开始时间和结束时间,还要计算商品距离开始时间的倒计时和结束时间的倒计时,但是这样只是从后台获取到开始时间,还要再和手机系统的时间相减,才能获取到开始 ...
- 获取服务器时间的软件如何修改时间,小程序云开发获取服务器时间
在实际开发过中,我们需要获取服务器时间,来保证时间的准确性,这里主要介绍使用 使用云函数来获取服务器时间 // 云函数入口文件 const cloud = require('wx-server-sdk ...
最新文章
- python hexdump_hexdump用法
- 解释@Component @Controller @Service @Repository
- VTK:可视化之ElevationBandsWithGlyphs
- OpenCV PCA提取对象的方向的实例(附完整代码)
- zookeeper教程
- php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例
- 单选按钮带文字_计算机二级MS office高级应用历年真题操作题文字解析
- [POJ2420 A Star not a Tree?]
- linux shell 输出日期格式,Linux下Shell日期的格式
- Java基础学习总结(135)——Java代码性能优化实践经验再总结
- 程序员面试金典——5.2二进制小数
- linux whois 命令 详解
- 1458: 移动距离(暴力模拟)
- JS学习总结(5)——循环语句
- 地球重力场模型EGM2008使用教程及软件
- CISSP 重点知识点总结3
- oracle client 客户端 安装 oracle客户端安装
- MOSEK Fusion Model
- 微信小程序tabBar不显示问题
- Java永久保存数据_java怎么保存数据