网络程序设计实验报告p 下载本文

内容发布更新时间 : 2024/11/16 2:44:46星期一 下面是文章的全部内容请认真阅读。

网络程序设计 实验报告 实验名称:_ __UDP通信实验 _______ 实验类型: ____ _验证型实验 指导教师:_______ _____ ______ 专业班级:_____ _ ____ _ 姓 名:_____ ___ _______ 学 号: ____ 电子邮件:___ __ 实验地点:__ 实验成绩:__________________________ 一、实验目的 ? 1、进一步理解Winsock API的调用方法 ? 2、了解UDP协议的工作原理 ? 3、掌握UDP服务端程序和客户端程序的编写流程 ? 4、熟悉程序的调试方法。 二、实验设计 1、数据报套接字编程模型时序和流程 服务端 socket() 客户端 bind() recvfrom阻塞,等待客户连接处理服务请sendto() closesocket服务应服务请socket() bind() sendto() recvfrom closesocket图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)&sin,sizeof(sin)) 绑定该监听套接字到一个本地地址,接下来是一个循环语句,循环跳出的条件是客户端发来的数据是‘bye’或自己发送给客户端的数据为‘bye’,当接收到数据为‘bye’或自己发出‘bye’时关闭套接字,结束程序,否则就接受数据,输出接受到的数据,然后输入发送给客户端的数据,以此循环。 图2:服务端收发数据的流程图 4、客户端的程序流程图如下: