ImageVerifierCode 换一换
格式:DOC , 页数:18 ,大小:542.50KB ,
资源ID:3755471      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/3755471.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(UDP及TCP通信程序的设计与实现实验报告.doc)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

UDP及TCP通信程序的设计与实现实验报告.doc

1、_实验报告课 程 计算机网络(双语)(课程设计) 实验名称 UDP及TCP通信程序的设计与实现 专业班级 姓 名 学 号 2013 年 5 月 30 日精品资料目录实验目的和内容1实验目的1实验内容1实验环境2程序的逻辑框图2UDP通信程序的逻辑框图:2TCP通信程序的逻辑框图:3程序源代码(数据结构的描述、核心算法)41.TCP通信程序源代码42.TCP通信程序数据结构的描述73.TCP通信程序的核心算法74.UDP通信程序源代码85.UDP通信程序数据结构的描述116.UDP通信程序的核心算法12实验数据、结果分析13TCP通信程序实验结果分析13UDP通信程序实验结果分析14总结16实验

2、目的和内容实验目的掌握win32平台下,使用winsock API来实现UDP通信程序和TCP通信程序。实验内容1. 实现控制台模式下,在单机上基于UDP的聊天程序;2. 实现控制台模式下,在单机上基于TCP的聊天程序;3. 上述两个程序,最简单的实现方式是:一方发送、另一方接收、交替进行;4. 提交上述2个程序的源程序,程序代码有充分的注释,并填写实验报告,实验报告的主要内容为说明程序设计的思路,程序代码的流程。实验环境在win7系统下,visual studio 2008环境下的win32平台下程序的逻辑框图UDP通信程序的逻辑框图:TCP通信程序的逻辑框图:程序源代码(数据结构的描述、核

3、心算法)1.TCP通信程序源代码Client端:#include stdafx.h#include #include #include #include /初始化函数,初始化版本号int InitSock(BYTE minorVer = 2, BYTE majorVer = 2)WSADATA wsaData;WORD sockVersion = MAKEWORD(minorVer, majorVer);if(WSAStartup(sockVersion, &wsaData) != 0)exit(0);return 1;int main()char rbuf256;char szText256

4、;InitSock();/创建socket,第一个参数表示用IP协议,第二个参数表示用TCP传输,第三个不大清楚SOCKET sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);/判断socket是否创建成功if(sListen = INVALID_SOCKET)printf(Failed socket() n);return 0;/用于存储IP地址和端口号的变量sockaddr_in sin;sin.sin_family = AF_INET;/IP协议sin.sin_port = htons(4567);/端口号sin.sin_addr.S

5、_un.S_addr = INADDR_ANY; /接收任何IP的连接/绑定函数,将socket 与 IP地址和端口 绑定在一块if(bind(sListen, (LPSOCKADDR)&sin, sizeof(sin) = SOCKET_ERROR)printf(Failed bind() n);return 0;/开始监听,第二个参数表示最大连接数if(listen(sListen, 2) = SOCKET_ERROR)printf(Failed listen() n);return 0;/定义一个新的变量sockaddr_in remoteAddr;int nAddrLen = size

6、of(remoteAddr);/用于存储连接客户端的socketSOCKET sClient;/accept函数会阻塞,直到等到有socket连接服务器为止,才继续往后执行,并将客户端的IP和端口号存在remoteAddr中sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);printf(接收到一个连接%s rn, inet_ntoa(remoteAddr.sin_addr);while(TRUE)if(sClient = INVALID_SOCKET)printf(Failed accept();continue;prin

7、tf(send:);scanf(%s,szText);/发送函数,往sClient这个socket中发送szTextsend(sClient, szText, strlen(szText), 0);/recv为阻塞函数,等待sClient中传来数据int nRecv = recv(sClient, rbuf, 256, 0);if(nRecv0)rbufnRecv = 0;printf(receive:%sn, rbuf);closesocket(sClient);closesocket(sListen);WSACleanup();return 0;Server端:#include stdaf

8、x.h#include #include #include #include /初始化函数,初始化版本号int InitSock(BYTE minorVer = 2, BYTE majorVer = 2)WSADATA wsaData;WORD sockVersion = MAKEWORD(minorVer, majorVer);if(WSAStartup(sockVersion, &wsaData) != 0)exit(0);return 1;int main()InitSock();/创建socket,第一个参数表示用IP协议,第二个参数表示用TCP传输,第三个不大清楚SOCKET s =

9、 socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(s = INVALID_SOCKET)printf( Failed socket() n);return 0;/用于存储IP地址和端口号的变量sockaddr_in servAddr;servAddr.sin_family = AF_INET;servAddr.sin_port = htons(4567);/要连接的端口号servAddr.sin_addr.S_un.S_addr = inet_addr(127.0.0.1);/要连接的IP地址/连接函数,是一个阻塞类型的函数,用s这个socket与服务

10、器地址的某个端口连接,之后往s这个socket中写数据,服务器就能收到if(connect(s, (sockaddr*)&servAddr, sizeof(servAddr) = -1)printf( Failed connect() n);return 0;char buff256;char szText256;while(true)/接收函数,是一个阻塞类型的函数,等待s这个socket中传来数据,256表示接收的最大字符数int nRecv = recv(s, buff, 256, 0);if(nRecv 0)buffnRecv = 0;printf(receive:%sn, buff)

11、;printf(send:);scanf(%s,szText);/发送函数,往s这个socket中发送szText这个字符串send(s, szText, strlen(szText), 0);closesocket(s);WSACleanup();return 0;2.TCP通信程序数据结构的描述(1)客户端及服务器都含有存储IP地址及端口号的数据结构,sockaddr_in remoteAddr; 和servAddr(2)用于存储连接客户端的socket: SOCKET sClient;和用于存储连接服务器的socket:SOCKET s3.TCP通信程序的核心算法服务器首先启动,通过调用

12、socket( )建立一个套接口,然后bind( )将该套接口和本地地址(IP地址和端口)联系在一起,再listen( )使套接口做好侦听的准备,并规定它的请求队列的长度, 之后就调用accept( )来接收连接,并获得客户机的地址信息;客户在建立套接口后就可调用connect( ) 和服务器建立连接; 连接一旦建立,客户机和服务器之间就可以通过调用:send( )和recv( ) (或read( )和write( )来发送和接收数据; 最后,待数据传送结束后,双方调用closesocket() 关闭套接口。4.UDP通信程序源代码Client端:#include stdafx.h#inclu

13、de #include #include /在同一主机的不同端口上分别运行服务器程序和客户端程序WORD RPort = 6666; /远程端口RemotePortchar RIP16=127.0.0.1; /远程IP地址RemoteIPAddrWORD LPort = 7777; /本地端口LocalPortchar LIP16=127.0.0.1; /本地IP地址LocalIPAddrSOCKET S; /套接口SOCKETstruct sockaddr_in rAddr; /远程参数,remoteAddrstruct sockaddr_in lAddr; /本地参数,localAddrW

14、SADATA WD; /Winsock DLL信息int r; /result;/-void ShowInfo(char *info)puts(info);exit(1);/-void SetsockAddr(struct sockaddr_in *A,WORD Port,char *IP)A-sin_family = AF_INET; /TCP/IP协议A-sin_port = htons(Port); /端口A-sin_addr.s_addr =inet_addr(IP); /IP 地址/-void main( )WORD v; /wVersionRequested;/- - - - -

15、- - - Startup Win socket - - - - - - - -v=0x0101; /0x0101 for v1.1, 0x0002 forv 2.0r = WSAStartup(v, (LPWSADATA)&WD);if(r != 0)ShowInfo(Start_Error);/- - - - - - - - Create Win socket - - - - - - - -S = socket(AF_INET, SOCK_DGRAM, 0);/创建套接字if(S = -1)ShowInfo(socket_Create_Error);int l=sizeof(rAddr);

16、char Msg80;puts(Type exit then Quit Program!);SetsockAddr(&lAddr, LPort, LIP);/初始化变量lAddrr = bind(S,(struct sockaddr far *)&lAddr, sizeof(lAddr);if(r = -1)ShowInfo(bind_Error);SetsockAddr(&rAddr, RPort, RIP);do/- - - - - - - - Send Mess - - - - - - - -puts(Send:);gets(Msg);if(!strcmp(Msg,exit)/break

17、;r = sendto(S,Msg,strlen(Msg), 0,(struct sockaddr far *)&rAddr, l);/通过套接字向接收端发送信息if(r = -1)ShowInfo(Send_Error);/- - - - - - - - Recieve Mess - - - - - - - -puts(Send ok! Waiting Recieve.);/r = recv(S, Msg, 80,0);r = recvfrom(S,Msg,80,0,(struct sockaddr far *)&rAddr, &l);/发送套接口的主机地址信息存放在rAddr中if(r =

18、 -1)ShowInfo(Recieve_Error);Msgr=0;puts(Msg);puts(Recieve ok!);while(1);closesocket(S);WSACleanup();return ;Server端:#include stdafx.h#include #include #include /在同一主机的不同端口上分别运行服务器程序和客户端程序WORD RPort = 7777; /远程端口RemotePortchar RIP16=127.0.0.1; /远程IP地址RemoteIPAddrWORD LPort = 6666; /本地端口LocalPortchar

19、LIP16=127.0.0.1; /本地IP地址LocalIPAddrSOCKET S; /套接口SOCKETstruct sockaddr_in rAddr; /远程参数,remoteAddrstruct sockaddr_in lAddr; /本地参数,localAddrWSADATA WD; /Winsock DLL信息int r; /result;/-void ShowInfo(char *info)puts(info);exit(1);/-void SetsockAddr(struct sockaddr_in *A,WORD Port,char *IP)A-sin_family =

20、AF_INET; /TCP/IP协议A-sin_port = htons(Port); /端口A-sin_addr.s_addr =inet_addr(IP); /IP 地址/-void main( )WORD v; /wVersionRequested;/- - - - - - - - Startup Win socket - - - - - - - -v=0x0101; /0x0101 for v1.1, 0x0002 forv 2.0r = WSAStartup(v, (LPWSADATA)&WD);if(r != 0)ShowInfo(Start_Error);/- - - - - -

21、 - - Create Win socket - - - - - - - -S = socket(AF_INET, SOCK_DGRAM, 0);/创建套接字if(S = -1)ShowInfo(socket_Create_Error);int l=sizeof(rAddr);char Msg80;puts(Type exit then Quit Program!);SetsockAddr(&lAddr, LPort, LIP);/初始化变量lAddrr = bind(S,(struct sockaddr far *)&lAddr, sizeof(lAddr);if(r = -1)ShowIn

22、fo(bind_Error);SetsockAddr(&rAddr, RPort, RIP);do/- - - - - - - - Recieve Mess - - - - - - - -/puts(Send ok! Waiting Recieve.);/r = recv(S, Msg, 80,0);r = recvfrom(S,Msg,80,0,(struct sockaddr far *)&lAddr, &l);/发送套接口的主机地址信息存放在rAddr中if(r = -1)ShowInfo(Recieve_Error);Msgr=0;puts(Msg);puts(Recieve ok!)

23、;/- - - - - - - - Send Mess - - - - - - - -puts(Send:);gets(Msg);if(!strcmp(Msg,exit)/break;r = sendto(S,Msg,strlen(Msg), 0,(struct sockaddr far *)&lAddr, l);/通过套接字向接收端发送信息if(r = -1)ShowInfo(Send_Error);while(1);closesocket(S);WSACleanup();return ;5.UDP通信程序数据结构的描述(1)SOCKET S:服务器套接字(2)struct sockaddr

24、_in rAddr:远程参数,remoteAddr,存储TCP/IP协议,IP地址及端口号(3)struct sockaddr_in lAddr:本地参数,localAddr,存储TCP/IP协议,IP地址及端口号6.UDP通信程序的核心算法服务器首先启动,通过调用socket( )建立一个套接口,然后bind( )将该套接口和本地地址(IP地址和端口)联系在一起,服务器调用recvfrom ( )等待接收数据。 客户机通过调用socket( )建立一个套接口,然后bind( )将该套接口和本地地址(IP地址和端口)联系在一起,客户机调用sendto( )向服务器发送数据; 服务器的recvf

25、rom ( ) 接收到客户机的数据后,调用sendto( )向客户机发送应答数据; 客户机的recvfrom ( ) 便接收到了服务器的应答数据; 最后,待数据传送结束后,双方调用closesocket( )关闭套接口。关于程序中调用的库函数的几点说明:1. 对sendto函数的说明 int sendto( SOCKET s, /源套接口 char *buf, /待发送数据的缓冲区 int buflen, /缓冲区中数据的长度 int flags, /调用方式标志位,一般取0 struct sockaddr FAR *to, / 指向目的套接口的主机地址 int tolen /目的套接口主机地

26、址的长度 );sendto函数主要用于SOCK_DGRAM 类型套接口向to参数指定端的套接口发送数据报。对于SOCK_STREAM 类型套接口,to和tolen 参数被忽略;这种情况下sendto( ) 等价于send( ) 。 2. 对recvfrom函数的说明int recvfrom( SOCKET s /接收套接口 char *buf /接收数据的缓冲区 int len /缓冲区中数据的长度 int flags /调用方式标志位,一般取0 struct sockaddr FAR *from / 获取发送套接口的主机地址 int fromlen /发送套接口的主机地址的长度 );recv

27、from函数主要用于从一个套接口接收数据 实验数据、结果分析TCP通信程序实验结果分析:当Client端启动时,Server端收到来自Client端的信号,表明双方的连接已经建立,可以互相通讯,从client端发送“hello”, Server端收到来自Client端的“hello”, Server端也可以向client端发送信息。 UDP通信程序实验结果分析:打开UDP的client端,并打开UDP的server端,发送“hello”给server端,如下图所示:server端收到信息以后,发送“hi”给client端,client端也能收到信息。总结Welcome ToDownload !欢迎您的下载,资料仅供参考!

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服