- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电子科技大学计算机网络编程实验time客户端
实验报告 课程名称:计算机网络编程
学 院:计算机科学与工程学院
专 业:计算机科学与技术
指导教师:
学生姓名田茂
学 号:2013060103004
实验成绩: 日 期:2015年11月 电子科技大学计算机学院实验中心 电 子 科 技 大 学
实 验 报 告
实验三:(实验项目的名称):针对TIME服务的UDP客户软件的实现
实验室名称: 主楼A2-412 实验时间:第十二周周五19:00-21:00
三、实验目的:
1. 掌握UDP客户端软件的工作原理。
2. 掌握针对TIME服务的UDP客户端软件的编程步骤和编程实现,并最终形成可执行代码。
四、实验原理:
TCP/IP定义一种服务,它允许一台机器从另外一台机器获得当前的时间和日期,该服务正式命名为恶TIME。服务器只要收到请求,就从本地的操作系统中获取当前的日期和时间,使用标准的格式编码该信息,然后在响应中发给客户。客户可以使用UDP在协议端口37上访问TIME服务。
在本实验中,通过发送数据联系TIME服务,然后,程序会调用read等待应答并从应答中取出时简值。time_c一旦获得时间,将该时间转换为适合本地机器的形式。
五、实验内容:
本实验主要完成针对TIME服务的UDP客户软件的实现。实验内容包括:
1、编程环境的准备,要求在Linux操作系统下安装GCC或CC编译器。
2、利用编辑器编写客户软件代码(编辑器自选,如文本编辑器,或Linux的Vi等)
3、利用GCC编译器调试并形成可执行代码
4、运行客户程序,验证功能实现。
5、程序框图:
六、实验器材(设备、元器件):
Ubtuntu14.04操作系统;gcc编译工具;ScureCRT工具
七、实验步骤:
本实验主要任务是编写完成基于UDP协议的客户端网络程序,该网络客户程序能通过互联网访问任一台开通TIME服务的主机。
实验首先通过在服务器机器上启动基于UDP的TIME服务,该主机既可以运行Windows操作系统,也可以运行Linux操作系统。然后在客户机上启动基于UDP的TIME客户程序,该客户程序通过发送数据报联系TIME服务,从应答中获得了时间后,将该时间转换为适合于本地机器的形式并打印。
具体的实验步骤如下:
在Windows机上安装Linux环境, 在Vmware下安装Ubuntu,利用编辑器编写源程序,以下为vi示例。
利用编辑器编写源程序
3.源代码如下:
#include stdio.h
#include stdlib.h
#include unistd.h
#include string.h
#include stdarg.h
#include sys/types.h
#include sys/socket.h
#include netinet/in.h
#include arpa/inet.h
#include netdb.h
#include time.h
#include errno.h
#define BUFSIZE 64
#define UNIXEPOCH 2208988800UL
#define MSG what time is it?\n
extern int errno;
int errexit(const char *format,...);
int connectsock(const char *host, const char *service, const char *transport );
int connectUDP(const char *host, const char *service);
int main(int argc, char *argv[]){
char *host= localhost;
char *service= time;
time_t now;
int s,n;
switch(argc){
case 1:
host = localhost;
break;
case 3:
service = argv[2];
case 2:
host=argv[1];
break;
default:
fprintf(stderr,usage: UDPtime[host[port]]\n);
exit(1);
}
s=connectUDP(host,service);
(void)write(s,MSG,strlen(MSG));
n=read(s,(char *)now,sizeof(now));
if(n0) errexit(read failed: %s\n,
文档评论(0)