- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
实验报告
课程名称:计算机网络编程
学 院:计算机科学与工程学院专 业:计算机科学与技术
指导教师:
学生姓名:田茂学 号:
实验成绩:
日 期:2015年11月
电子科技大学计算机学院实验中心
电 子 科 技 大 学
实 验 报 告
一、实验一:(实验项目的名称):针对ECHO服务的TCP客户软件的实现二、实验室名称:主楼A2-412 实验时间:第十周周日9:00-12:00
三、实验目的:
掌握TCP客户端软件的工作原理。
掌握针对ECHO服务的TCP客户端软件的编程步骤和编程实现,并最终形成可执行代码
四、实验原理:
Echo服务是一种非常有用的用于调试和检测的工具。这个协议的作用也十分简单,接收到什么原封发回就是了。基于TCP协议的Echo服务有一种Echo服务被定义为在TCP协议上的面向连接的应用。主要用于调试和检测中。它可以基于TCP协议,服务器就在TCP端口7检测有无消息,如果使用UDP协议,基本过程和TCP一样,检测的端口也是7。是路由也是网络中最常用的数据包,可以通过发送echo包知道当前的连接节点有那些路径,并且通过往返时间能得出路径长度。
五、实验内容:
本实验主要完成针对ECHO服务的TCP客户软件的实现。实验内容包括:
1、编程环境的准备,要求在Linux操作系统下安装GCC或CC编译器。
2、利用编辑器编写客户软件代码(编辑器自选,如文本编辑器,或Linux的Vi等)
3、利用GCC编译器调试并形成可执行代码
4、运行客户程序,验证功能实现。
5、程序框图如下:
六、实验器材(设备、元器件):
VMwareWorkstation,Ubtuntu操作系统,gcc编译工具,SecureCRT
七、实验步骤:
1、在Windows机上安装Linux环境,如Vmware下安装Linux,或装Ubuntu,
或直接安装Linuxhat等.2.利用SecureCRT编写源程序
源代码如下:
#includestdio.h#includestdlib.h#includeunistd.h#includestring.h#includestdarg.h#includesys/types.h#includesys/socket.h#includenetinet/in.h#includearpa/inet.h#includenetdb.h#includeerrno.h#defineLINELEN128externinterrno;
intTCPecho(constchar*host,constchar*service);interrexit(constchar*format,...);
intconnectsock(constchar*host,constchar*service,constchar*transport);intconnectTCP(constchar*host,constchar*service);
intmain(intargc,char*argv[]){
char*host=localhost;char*service=echo;switch(argc){
case1:
host=localhost;break;
case3:
service=argv[2];case2:
host=argv[1];break;
default:
fprintf(stderr,usage:TCPecho[host[port]]\n);exit(1);
}
TCPecho(host,service);exit(0);
}
intTCPecho(constchar*host,constchar*service){charbuf[LINELEN+1];
ints,n;
intoutchars,inchars;s=connectTCP(host,service);while(fgets(buf,sizeof(buf),stdin)){
buf[LINELEN]=\0;
outchars=strlen(buf);(void)write(s,buf,outchars);for(inchars=0;incharsoutchars;inchars+=n){
n=read(s,buf[inchars],outchars-inchars);if(n0)
errexit(sockerreadfailed:%s\n,strerror(errno));
}
文档评论(0)