




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络编程技术实验报告实验名称时间同步服务器设计队 别姓名学号实验日期实验报告要求: 1.实验目的2.实验要求3.实验环境 4.实验作业5.问题及解决 6.思考问题 7.实验体会【实验目的】一、 实验目的1、熟悉流式套接字的基本流程。2、掌握TCP连接建立过程。3、掌握基于TCP协议的数据发送与接收的编程。4、掌握服务器本地时间获取与格式转换功能的编程。二、 实验内容使用流式套接字编程,实现时间同步服务器,该服务器能够接受客户端的查询请求,获取本地时间,并将结果发送回客户端,同时开发与服务器通信的客户端,以验证双方交互的功能。【实验要求】使用流式套接字编程,实现时间同步服务器,该服务器能够接受客
2、户端的查询请求,获取本地时间,并将结果发送回客户端,同时开发与服务器通信的客户端,以验证双方交互的功能。具体要求如下:1熟悉流式套接字编程的基本流程。2完成TCP连接建立过程。3完成基于TCP的数据发送与接收功能。4完成服务器本地时间获取与格式转换功能。【实验环境】 1、VC 6.0+ 2、windows 73、以太网【实验作业】系统中客户方与服务器从建立连接,发送同步请求到同步系统时间的流程为:在整个时间同步过程中服务器必须要处于工作状态,时刻监听着网络中客户方的请求信息,监听到客户方的时间同步请求时,根据客户方的需求,来进行服务器响应,客户方在接收到服务器的响应报文后,根据服务器发送过来的
3、时间,以及算出的网络延时来同步系统的时间。套接字基础概念实现一个最基本的流式套接字客户端/服务器通信程序。在该程序中,客户端和服务器将按照如下步骤交互: 1. 服务器程序:#include <stdio.h>#include <time.h>#include <stdafx.h>#include <Winsock2.h>#defineMAXLINE4096#defineLISTENQ1024#define SERVER_PORT 13 int main(int argc, char* argv)SOCKETListenSocket = INVAL
4、ID_SOCKET, ClientSocket = INVALID_SOCKET;int iResult;struct sockaddr_inservaddr;charbuffMAXLINE;time_tticks;int iSendResult; WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD(2, 2); iResult = WSAStartup(wVersionRequested, &wsaData); if (iResult != 0) printf("WSAStartup 调
5、用错误,错误号: %dn", WSAGetLastError(); return -1; wsaData.wVersion if (LOBYTE(wsaData.wVersion) != 2 | HIBYTE(wsaData.wVersion) != 2) printf("无法找到可用的Winsock.dll版本n"); WSACleanup(); return -1; else printf("Winsock 2.2 dll初始化成功n");if(ListenSocket = socket(AF_INET, SOCK_STREAM, 0)&l
6、t;0)printf("socket 函数调用错误,错误号: %dn", WSAGetLastError();WSACleanup();return -1;memset(&servaddr, 0, sizeof(servaddr);servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = htonl(INADDR_ANY);servaddr.sin_port = htons(SERVER_PORT);/* daytime server */iResult = bind( ListenSocket, (struc
7、t sockaddr *) & servaddr, sizeof (servaddr); if (iResult = SOCKET_ERROR) printf("bind 函数调用错误,错误号: %dn", WSAGetLastError();closesocket(ListenSocket); WSACleanup(); return -1; iResult = listen(ListenSocket, LISTENQ);if (iResult = SOCKET_ERROR)printf("listen 函数调用错误,错误号: %dn", WS
8、AGetLastError();closesocket(ListenSocket); WSACleanup(); return -1; for ( ; ; ) ClientSocket = accept(ListenSocket, NULL, NULL); if (ClientSocket = INVALID_SOCKET) printf("accept 函数调用错误,错误号: %dn", WSAGetLastError(); closesocket(ListenSocket); WSACleanup(); return -1; ticks = time(NULL);mem
9、set(buff,0,sizeof(buff); sprintf(buff, "%.24srn", ctime(&ticks); printf("获取当前系统时间: %sn",buff ); iSendResult = send( ClientSocket, buff, strlen(buff), 0 ); if (iSendResult = SOCKET_ERROR) printf("send 函数调用错误,错误号: %dn", WSAGetLastError(); closesocket(ClientSocket); WS
10、ACleanup(); return -1; printf("向客户端发送时间成功n");iResult = shutdown(ClientSocket, SD_SEND); if (iResult = SOCKET_ERROR) printf("shutdown 函数调用错误,错误号: %dn", WSAGetLastError(); closesocket(ClientSocket); WSACleanup(); return -1; closesocket(ClientSocket); printf("主动关闭连接n");clo
11、sesocket(ListenSocket);WSACleanup();return 0;先是执行服务器程序进行Winsock 2.2 dll初始化:即有截图:客户端程序:#include <stdio.h>#include <Winsock2.h>#include <stdafx.h>#defineMAXLINE4096#define SERVER_PORT 13 int main(int argc, char* argv)SOCKETConnectSocket = INVALID_SOCKET;int iResult;charrecvlineMAXLIN
12、E + 1;struct sockaddr_inservaddr;if (argc != 2)printf("usage: DayTime <IPaddress>");return 0; WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD(2, 2); iResult = WSAStartup(wVersionRequested, &wsaData); if (iResult != 0) printf("WSAStartup 函数调用错误,错误号: %dn&
13、quot;, WSAGetLastError(); return -1; wsaData.wVersion if (LOBYTE(wsaData.wVersion) != 2 | HIBYTE(wsaData.wVersion) != 2) printf("无法找到可用的Winsock.dll版本n"); WSACleanup(); return -1; else printf("Winsock 2.2 dll初始化成功n");if(ConnectSocket = socket(AF_INET, SOCK_STREAM, 0)<0)printf(&
14、quot;socket 函数调用错误,错误号: %dn", WSAGetLastError();WSACleanup();return -1;memset(&servaddr, 0, sizeof(servaddr);servaddr.sin_family = AF_INET;servaddr.sin_port = htons(SERVER_PORT); servaddr.sin_addr.s_addr=inet_addr(argv1);iResult = connect( ConnectSocket, (LPSOCKADDR)&servaddr, sizeof(se
15、rvaddr);if (iResult = SOCKET_ERROR)printf("connect 函数调用错误,错误号: %dn", WSAGetLastError();closesocket(ConnectSocket); WSACleanup(); return -1; memset(&recvline, 0, sizeof(recvline); printf("当前时间是:"); do Sleep(5000); iResult = recv(ConnectSocket, recvline, MAXLINE, 0); if (iResul
16、t > 0) printf("%s", recvline);elseif (iResult = 0) printf("对方连接关闭,退出n"); else printf("recv 函数调用错误,错误号: %dn", WSAGetLastError(); memset(&recvline, 0, sizeof(recvline); while (iResult > 0);closesocket(ConnectSocket); WSACleanup();return 0;执行完上面的服务器程序,然后在执行客户端程序:
17、1)先是初始化,如下图:2)再是获取时间:3)最后是服务器关闭连接,退出:最后:此次实验执行过程:服务器命令:(什么都不用输入)(并且按enter键)出现:Winsock 2.2 dll初始化成功客户端命令:(并且按enter键)出现:Winsock 2.2 dll初始化成功当前时间是:Wed Nov 02 21:17:50 2016(若是输入127.0.0.1则时间结果为:Tue Nov 02 21:17:50)对方连接关闭,退出通过对系统进行一系列测试,如上图中服务器程序执行和客户端程序执行同步之前是有时间差的,然后在运行程序后时间同步,变成:Nov 02 21:17:50 2016,从测试结果来看实现了当初的设计目标,系统能够初步完成客户端与服务器的时间同步。即同步的结果如下:【实验中出现问题及解决方法】1) 问题1:找不到很多头文件,特别是StdAfx.h头文件?2) 解决方法1:去百度下载很多的安装包,安装plamtSDK,然后就有了这个头文件,本来这个头文件是Linux系统里的,但是windows的VC 6.0+也可以通过添加安装一些软件来添加它。自己通过在工程里添加头文件和路径。3) 问题2:有很多函数的功能不清楚?4) 解决方法:通过课本的查找和网络资料的查找,然后获得比较清晰的答案。【思考问题】会不会产生时延然后使时间不同步?怎么才能缩短客户端查询时间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年新教材高中政治 3.2 中国特色社会主义的创立、发展和完善说课稿 新人教版必修第一册001
- 木制玩具制作工岗前决策判断考核试卷含答案
- 全媒体运营师岗前跨界整合考核试卷含答案
- 高中基本能力 《非洲你好》说课说课稿
- 吴忠市土地利用效率与城市高质量发展的耦合协调研究
- YH公司直播培训业务运营优化策略研究
- 3 我不拖拉(教学设计)-部编版(五四制)道德与法治一年级下册
- 旋毛虫通过IDO依赖的色氨酸代谢介导CD4+T细胞功能失衡的作用机制
- 人类发展生态学视角下幼儿园环境创设研究
- 高中信息技术:1.2《日新月异的信息技术》说课稿教科版
- 城乡燃气管道维护保养技术方案
- 2025年西藏公开遴选公务员笔试试题及答案(A类)
- 水土保持治理工应急处置考核试卷及答案
- 初中学生心理健康辅导手册
- 工业园区储能项目商业计划书
- 仓库搬运安全培训内容课件
- 【基于财务状况质量分析理论的京东财务报表分析案例18000字(论文)】
- 抗炎药物作用机制研究-洞察及研究
- 2025至2030中国航空保险行业项目调研及市场前景预测评估报告
- (2025年标准)吊篮移交协议书
- 中专院校普法课件
评论
0/150
提交评论