- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二实验报告 (1000字) - 实验报告 - 书业网
实验二实验报告 (1000字) - 实验报告 - 书业网
网络程序设计 实验报告
实验名称:___UDP通信实验 _______ 实验类型: ____ _验证型实验
指导教师:_______ _____ ______ 专业班级:_____ _ ____ _ 姓 名:_____ ___ _______ 学 号: ____
电子邮件:_____
实验地点:__
实验成绩:__________________________
一、实验目的
? 1、进一步理解Winsock API的调用方法 ? 2、了解UDP协议的工作原理
? 3、掌握UDP服务端程序和客户端程序的编写流程 ? 4、熟悉程序的调试方法。
二、实验设计
1、数据报套接字编程模型时序和流程
服务端 图1:流套接字编程时序图
2、用到的Winsock API函数有: 1)、创建套接字函数socket()
SOCKET socket(int af,int type,int protocol);
由于采用数据报套接字进行数据传输,因此type参数必须设置为SOCK_DGRAM,protocol参数必须设置为IPPROTO_UDP 2)、绑定本地地址到所创建的套接字函数bind()
int bind(SOCKET s,const struct sockaddr* name,int namelen); 3)、接收数据函数recvfrom()
int recvfrom(SOCKET s,char* buf,int len,int flags, struct sockaddr* from,int* fromlen); 4)、发送数据函数sendto()
int sendto(SOCKET s,const char* buf,int len,int flags, const struct sockaddr* to,int* tolen); 5)、关闭套接字函数closesocket() int closesocket(SOCKET s); 3、服务端的程序流程图如下:
说明:服务端的程序首先要调用函数socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)创建一个监听套接字,用于监听是否有客户端发送数据过来,然后调用bind(s,(LPSOCKADDR)amp;sin,sizeof(sin)) 绑定该监听套接字到一个本地地址,接下来是一个循环语句,循环跳出的条件是客户端发来的数据是bye’或自己发送给客户端的数据为bye’,当接收到数据为bye’或自己发出bye’时关闭套接字,结束程序,否则就接受数据,输出接受到的数据,然后输入发送给客户端的数据,以此循环。
N
图2:服务端收发数据的流程图
4、客户端的程序流程图如下:
说明:客户端的程序首先要调用函数socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)创建一个套接字,然后声明一个sockaddr_in类型的变量addr,存放服务端的地址信息,接下来是一个循环语句,循环跳出的条件是服务端发来的数据是bye’或自己发送给服务端的数据为bye’,当接收到数据为bye’或自己发出bye’时关闭套接字,结束程序,否则就输入发送给服务端的数据,接受数据,输出收到的数据,以此循环。
图2:客户端收发数据的流程图
三、实验过程(包含实验结果)
1、遇到的错误有:
1)、当客户端发送bye’时,服务端收到数据,但是客户端和服务端都未结束通话 错误原因:当判断接受数据是否为bye’时,用的代码是if (recMsg==”bye”),未用判断字符串的函数strcmp(recMsg,quot;byequot;),当客户端发送bye’后,未判断自己是否发送的bye’导致客户端未退出。 2、实验结果:
1)、服务端运行结果如下:
2)、客户端运行结果如下:
四、讨论与分析
1)、能否在接收数据之间不进行bind()调用?如果能,请说明可能的情况。
答:创建套接字之后,如果首先调用的是sendto函数,则可以不调用bind函数显式地
绑定本地地址,系统会自动为程序绑定,但是如果创建套接字后,直接调用recvfrom就会失败,因为套接字还没有绑定。
2)、能否使用connect()连接对方
您可能关注的文档
最近下载
- CQI-23注塑过程审核查检表(中英文)Molding System Assessment(... (中英对照).xlsx VIP
- 温度计读数练习.ppt VIP
- 2024年福建省福州市鼓楼区华大街道招聘社区工作者真题含答案详解.docx VIP
- 《矿山隐蔽致灾因素普查规范》(KAT22.3-2024)解读-(金属非金属矿山及尾矿库)总体解读.pdf VIP
- 2024年福建省福州市鼓楼区华大街道招聘社区工作者真题参考答案详解.docx VIP
- 喜剧之父阿里斯托芬简介课件.ppt VIP
- 2024年福建省福州市鼓楼区华大街道招聘社区工作者真题及参考答案详解.docx VIP
- 北师大版数学四年级上册数学(全册)教案.pdf VIP
- 三品变频器SANVC说明书.pdf
- 2024年福建省福州市鼓楼区华大街道招聘社区工作者真题带答案详解.docx VIP
文档评论(0)