电子科技大学计算机网络编程echo客户端的实现_第1页
电子科技大学计算机网络编程echo客户端的实现_第2页
电子科技大学计算机网络编程echo客户端的实现_第3页
电子科技大学计算机网络编程echo客户端的实现_第4页
电子科技大学计算机网络编程echo客户端的实现_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告课程名称:计算机网络编程学院:计算机科学与工程学院专业:计算机科学与技术指导教师:学生姓名:田茂学号:2013060103004实验成绩:日期:2015年11月电子科技大学计算机学院实验中心电 子 科 技 大 学实 验 报 告一、实验一:(实验项目的名称):针对ECHO服务的TCP客户软件的实现二、实验室名称: 主楼A2-412 实验时间:第十周周日9:00-12:00 三、实验目的:1.掌握TCP客户端软件的工作原理。2.掌握针对ECHO服务的TCP客户端软件的编程步骤和编程实现,并最终形成可执行代码四、实验原理:Echo服务是一种非常有用的用于调试和检测的工具。这个协议的作用也十分

2、简单,接收到什么原封发回就是了。 基于TCP协议的Echo服务有一种Echo服务被定义为在TCP协议上的面向连接的应用。主要用于调试和检测中。它可以基于TCP协议,服务器就在TCP端口7检测有无消息,如果使用UDP协议,基本过程和TCP一样,检测的端口也是7。是路由也是网络中最常用的数据包,可以通过发送echo包知道当前的连接节点有那些路径,并且通过往返时间能得出路径长度。五、实验内容:本实验主要完成针对ECHO服务的TCP客户软件的实现。实验内容包括:1、编程环境的准备,要求在Linux操作系统下安装GCC或CC编译器。2、利用编辑器编写客户软件代码(编辑器自选,如文本编辑器,或Linux的

3、Vi等)3、利用GCC编译器调试并形成可执行代码4、运行客户程序,验证功能实现。5、程序框图如下:六、实验器材(设备、元器件):VMware Workstation,Ubtuntu操作系统,gcc编译工具,SecureCRT七、实验步骤:1、在Windows机上安装Linux环境, 如Vmware下安装Linux, 或装Ubuntu, 或直接安装Linux hat等.2.利用SecureCRT编写源程序3.源代码如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <st

4、ring.h>#include <stdarg.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <errno.h>#define LINELEN 128extern int errno;int TCPecho(const char *host, const char *service);int errexit(cons

5、t char *format,.);int connectsock(const char *host, const char *service, const char *transport );int connectTCP(const char *host, const char *service);int main(int argc, char *argv) char *host= "localhost" char *service= "echo" switch(argc)case 1: host = "localhost" bre

6、ak;case 3: service = argv2;case 2: host=argv1; break;default: fprintf(stderr,"usage:TCPechohostportn"); exit(1); TCPecho(host,service); exit(0);int TCPecho(const char *host,const char *service) char bufLINELEN+1; int s,n; int outchars, inchars; s=connectTCP(host, service); while(fgets(buf,

7、sizeof(buf),stdin) bufLINELEN='0' outchars=strlen(buf); (void)write(s,buf,outchars); for(inchars=0;inchars<outchars;inchars+=n) n=read(s,&bufinchars,outchars-inchars); if(n<0) errexit("socker read failed: %sn",strerror(errno); fputs(buf,stdout); int errexit(const char *fo

8、rmat,.) va_list arg; va_start(arg, format); vfprintf(stderr,format,arg); va_end(arg); exit(1);int connectsock(const char *host, const char *service, const char *transport ) struct hostent *phe; struct servent *pse; struct protoent *ppe; struct sockaddr_in sin; int s, type; memset(&sin, 0, sizeof

9、(sin); sin.sin_family = AF_INET; if ( pse = getservbyname(service, transport) ) sin.sin_port = pse->s_port; else if (sin.sin_port=htons(unsigned short)atoi(service) = 0) errexit("can't get "%s" service entryn", service); if ( phe = gethostbyname(host) ) memcpy(&sin.sin

10、_addr, phe->h_addr, phe->h_length); else if ( (sin.sin_addr.s_addr = inet_addr(host) = INADDR_NONE ) errexit("can't get "%s" host entryn", host); if ( (ppe = getprotobyname(transport) = 0) errexit("can't get "%s" protocol entryn", transport); if

11、(strcmp(transport, "udp") = 0) type = SOCK_DGRAM; else type = SOCK_STREAM; s = socket(PF_INET, type, ppe->p_proto); if (s < 0) errexit("can't create socket: %sn", strerror(errno); if (connect(s, (struct sockaddr *)&sin, sizeof(sin) < 0) errexit("can't connect to %s.%s: %sn", host, service, strerror(errno); return s;int connectTCP(const char *host, const char *service) return connectsock(host,service,"tcp");4. 编译并调试程序切换到源代码所在的目录,使用GCC指令进行编译 $ GCC o echo_c e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论