欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    TCPUDP通信实验报告.doc

    • 资源ID:3008433       资源大小:50.52KB        全文页数:8页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    TCPUDP通信实验报告.doc

    .TCP/UDP通信实验报告 学号: 姓名:实验二:TCP/UDP通信实验报告一、实验目的熟练掌握 UDP、TCP Client/Server 模式的通信原理。二、实验内容传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议。面向连接是指一次正常的 TCP 传输需要通过在 TCP 客户端和 TCP 服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”。可靠性可以通过很多种方法来提供保证,在这里我们关心的是数据序列和确认。TCP 通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。要通过 TCP 传输数据,必须在两端主机之间建立连接。举例说明,TCP 客户端需要和 TCP 服务端建立连接,过程如图 12-1 所示。图 12-1 TCP 客户端与服务端连接过程、第一步中,客户端向服务端提出连接请求。这时 TCP SYN 标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在 TCP 报头的序列号区中插入自己的 ISN。服务端收到该 TCP 分段后,在 、第二步以自己的 ISN 回应(SYN 标志置位),同时确认收到客户端的第一个 TCP 分段(ACK 标志置位)。、在第三步中,客户端确认收到服务端的 ISN(ACK 标志置位)。到此为止建立完整的 TCP 连接,开始全双工模式的数据传输过程。根据以上内容编写一个 TCP Client/Server 模式的通信程序。事实上网络程序是由两个部分组成的-客户端和服务器端。它们的建立步骤如下:服务器端:socket->bind->listen->accept客户端:socket->connect。三、实验步骤实验按下述步骤进行:(1)编写UDP、TCP Client/Server模式的通信程序;(2)调试并运行自己编写的实现程序;(3)了解TCP Client/Server模式的工作原理,比较二者的不同,如出现异常情况,在实验报告中写出原因分析;(4)保留编写的实现程序在你的用户目录下,以备辅导教师检查。四、实验代码/*UDP*/*客户端的工作流程:首先调用socket函数创建一个Socket,填写服务器地址及端口号,*从标准输入设备中取得字符串,将字符串传送给服务器端,并接收服务器端返回的字*符串。最后关闭该socket。*Author:xiaopeng 01121435*Date:2015/05/16*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>/定义端口号#define PORT 5432int main(int argc,char *argv)int cli_sockfd;socklen_t addrlen;char seraddr14;struct sockaddr_in cli_addr;char buffer256;int len;if( argc != 2)/为输入IP地址作为参数的时候提示使用方法printf("使用方法: ./clientn");exit(0);/* 建立socket*/cli_sockfd=socket(AF_INET,SOCK_DGRAM,0);if(cli_sockfd<0)printf("创建socket失败!n");return 1;/* 填写sockaddr_in*/addrlen=sizeof(struct sockaddr_in);bzero(&cli_addr,addrlen);cli_addr.sin_family=AF_INET;/cli_addr.sin_addr.s_addr=htonl(INADDR_ANY);cli_addr.sin_port=htons(PORT);if( inet_pton(AF_INET, argv1, &cli_addr.sin_addr) <= 0)printf("ip地址转换失败,IP: %s!n",argv1);exit(0);bzero(buffer,sizeof(buffer);/* 从标准输入设备取得字符串*/printf("请输入要发送的消息:n");fgets(buffer, 256, stdin);/* 将字符串传送给server端*/fer),0,(struct sockaddr*)&cli_addr,addrlen);printf("消息已发出!等待服务器的响应.n");/* 接收server端返回的字符串*/len=recvfrom(cli_sockfd,buffer,sizeof(buffer),0,(struct sockaddr*)&cli_addr,&addrlen);/printf("receive from %sn",inet_ntoa(cli_addr.sin_addr);printf("从服务器收到: %s",buffer);close(cli_sockfd);return 0;服务器端程序如下:/*UDP*/*服务器的工作流程:首先调用socket函数创建一个Socket,然后调用bind函数将其与本机*地址以及一个本地端口号绑定,接收到一个客户端时,服务器显示该客户端的IP地址,并将字串*返回给客户端。*Author:xiaopeng 01121435*Date:2015/05/16*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#define PORT 5432int main(int argc,char *argv)int ser_sockfd;int len;/int addrlen;socklen_t addrlen;char seraddr100;struct sockaddr_in ser_addr;/*建立socket*/ser_sockfd=socket(AF_INET,SOCK_DGRAM,0);if(ser_sockfd<0)printf("I cannot socket successn");return 1;printf("Socket创建成功!n");/*填写sockaddr_in 结构*/addrlen=sizeof(struct sockaddr_in);bzero(&ser_addr,addrlen);ser_addr.sin_family=AF_INET;ser_addr.sin_addr.s_addr=htonl(INADDR_ANY);ser_addr.sin_port=htons(PORT);/*绑定客户端*/if(bind(ser_sockfd,(struct sockaddr *)&ser_addr,addrlen)<0)printf("连接错误!n");return 1;printf("绑定Scoket成功!,等待客户端的请求.n");while(1)bzero(seraddr,sizeof(seraddr);len=recvfrom(ser_sockfd,seraddr,sizeof(seraddr),0,(struct sockaddr*)&ser_addr,&addrlen);/*显示client端的网络地址*/printf("客户端IP地址: %sn",inet_ntoa(ser_addr.sin_addr);/*显示客户端发来的字串*/printf("接收到的消息:%s",seraddr);/*将字串返回给client端*/sendto(ser_sockfd,seraddr,len,0,(struct sockaddr*)&ser_addr,addrlen);close(ser_sockfd);return 0;接着使用gcc 4.6.3进行编译:gcc client.c -o clientgcc server.c -o server编译完成产生两个可执行文件client和server。首先运行服务器端程序server再运行客户端程序client并发送消息继续发送一条消息在服务器程序关闭的情况,UDP仍然可以发送消息,但是不能确保送达目的地。

    注意事项

    本文(TCPUDP通信实验报告.doc)为本站会员(小**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开