1 / 8
文档名称:

实验二实验报告.doc

格式:doc   大小:309KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验二实验报告.doc

上传人:小枷 2018/9/30 文件大小:309 KB

下载得到文件列表

实验二实验报告.doc

文档介绍

文档介绍:网络程序设计
实验报告

实验名称:_ __UDP通信实验_______
实验类型: ____ _验证型实验
指导教师:_______ _____ ______
专业班级:_____ _ ____ _
姓名:_____ ___ _______
学号: ____
电子邮件:___ __
实验地点:__

实验成绩:__________________________

一、实验目的
l 1、进一步理解Winsock API的调用方法
l 2、了解UDP协议的工作原理
l 3、掌握UDP服务端程序和客户端程序的编写流程
l 4、熟悉程序的调试方法。
二、实验设计
1、数据报套接字编程模型时序和流程
客户端
sendto()
closesocket()
recvfrom()
closesocket()
sendto()
处理服务请求
bind()
recvfrom()
bind()
socket()
服务端
阻塞,等待客户连接请求
服务请求
服务应答
socket()
图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(,SOCK_DGRAM,IPPROTO_UDP)创建一个监听套接字,用于监听是否有客户端发送数据过来,然后调用bind(s,(LPSOCKADDR)&sin,sizeof(sin)) 绑定该监听套接字到一个本地地址,接下来是一个循环语句,循环跳出的条件是客户端发来的数据是‘bye’或自己发送给客户端的数据为‘bye’,当接收到数据为‘bye’或自己发出‘bye’时关闭套接字,结束程序,否则就接受数据,输出接受到的数据,然后输入发送给客户端的数据,以此循环。
图2:服务端收发数据的流程图
4、客户端的程序流程图如下:
说明:客户端的程序首先要调用函数socket(,SOCK_DGRAM,IPPROTO_UDP)创建一个套接字,然后声明一个sockaddr_in