基于UDP协议文件传输系统概要的设计与开发_第1页
基于UDP协议文件传输系统概要的设计与开发_第2页
基于UDP协议文件传输系统概要的设计与开发_第3页
基于UDP协议文件传输系统概要的设计与开发_第4页
基于UDP协议文件传输系统概要的设计与开发_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目名称:NeusoftMediaPlayer项目编号:NEUWHU20080001文档编号:D09-PMT08010概要设计计科一班2组总页数20正文附录生效日期7.5编制批准概要设计书版本:1.02第2页××××详细设计书修改履历修改编号日期修改人版本号修改内容17.4易盛超1.01文档概述,系统结构图27.5胡承浩1.02模块详细概述

目录1 文档概述 41.1 文档目的和范围 41.2 术语/缩略语 41.3 参考文档 42.系统机构图………………………..53.模块详细概述……………………73.1socket模块………………73.1.1类成员数据………………83.1.2类成员函数………………83.2模块结构…………………..183.3类图………………………..19

文档概述文档目的和范围描述UDP文件传输系统的概要设计,为后继的详细设计提供基础。使项目相关人员,如设计人员,开发人员,测试人员等清楚地了解系统的设计,并形成统一的思想。范围:用于UDP文件传输系统的设计。术语/缩略语列出文档中使用的术语和缩略语,可以采用下面的表格形式:序号术语/缩略语说明1API应用程序编程接口2gEDM案内静止数据制作模块3CSocket通信模块参考文档序号文档名作者时间版本1VC++技术内幕潘爱民1999年1月第四版(清华版)2深入浅出+MFC_侯俊杰1996年8月简体版3NeusoftMediaPlayer项目要求书胡本仁2009Ver1.2系统结构图2.1系统总体结构图建立套接字Socket()建立套接字Socket()服务器建立一个数据报Packet()等待请求报文获得客户端地址构成信息包传送客户端建立套接字socket建立请求数据报发送请求创建接受包等待接受分配并填写数据缓冲区图2.1系统结构图服务器服务器客户机甲客户机乙客户机丙整体框架设计图2.2服务器流程创建Socket创建Socket分配数据缓冲区创建DatagramPacket等待连接收到数据包获得IP及端口号建立数据包发送信息关闭Socket图2.2服务器运行过程图2.3客户端运行流程创建Socket创建Socket向服务器发送请求等待应答处理接受的数据创建DatagramPacket发送数据结束图2.3客户端运行过程图模块详细概述3.1Socket通信模块客户端:

1

采集IP地址(输入服务器IP地址):保存用户输入的IP地址

2.

连接服务器:连接保存的IP地址所指向的服务器;

3.

文件上传:将文件转为流媒体,并上传至服务器。

用户通过输入服务器地址与端口(服务器)连接到服务器,浏览本地文件,点击发送后,客户端通过IP地址连接到服务器端。服务器端:

1.

服务器端文件保存:将接受到的文件保存到指定的物理路径(绝对路径)。

服务器启动服务,接收客户端文件。1.)模块内部函数Socket_BindSocket_SocketSocket_BindSocket_SocketSocket_Closesocket Socket_Closesocket2.)模块间接口函数Socket_ListenSocket_ConnectSocket_AcceptSocket_RecvSocket_SendSocket_CloseSocket_SendtoSocket_Recvfromsocket接口为管理本地上下文信息提供以下函数:-socket:分配最小的未用socket句柄;-句柄与本地或远地地址相关联;-getsockname和getpeername:分别确定socket-:释放socket句柄,使它可用于后面的复用。2.连接建立和连接终止:socket接口为建立和终止连接提供以下函数:-connect:客户通常使用connect来主动地与服务器建立连接;-listen:服务器使用listen来指示它想要被动地侦听进入的客户连接请求;-:服务器使用来创建新的通信端点,以为客户服务;-shutdown:有选择地终止一个双向连接的读端和/或写端流。3.数据传输机制:socket接口提供以下函数来发送和接收数据:-read/write:通过特定句柄接收和传输数据缓冲区;-:与read/write类似,但它们提供一个额外的参数来控制特定的socket特有操作(如交换“”“”-:交换无连接数据报;-readv/writev:分别支持“分散读”和“集中写”语义(这些操作优化用户/内核模式切换并简化内存管理);-sendmsg/recvmsg:通用函数,包含了所有其他数据传输函数的行为。对于UNIX域的socket,sendmsg和函数还提供在同一主机的任意进程间传递“”开文件句柄)的能力。注意这些接口也可被用于其他类型,比如文件和终端。4.选项(option)管理:socket接口定义以下函数,允许用户改变socket-setsockopt和getsockopt:修改或查询在协议栈不同层次中的选项。选项包括多点传送、广播,以及设置/获取发送和接收传输缓冲区的大小;-fcntl和ioctl:是UNIX系统调用,使在socket上能够进行异步、非阻塞,以及紧急消息递送。

除了上面描述的socket-和:处理网络寻址的多种情况,比如映射主机名到地址;-getservbyname:通过服务的端口号或人类可读的名字来对它们进行标识;-ntohl、ntohs、htonl、htons:执行网络字节序转换;-:在成组的打开的句柄上执行基于和基于定时器的事件多路分离。函数的相关用法需添加:

#include

<winsock2.h>

#pragma

comment(

lib,

"ws2_32.lib"

)

网络连接函数:

int

socket(

//成功返回Socket描述符,出错返回-1.

int

domain

//只能取。,

//套接字类型:SOCK_STREAM和SOCK_DGRAM。

int

protocol)

//一般取0.

int

bind(

//-1.

int

sockfd,

//socket()调用返回的套接口文件描述符

struct

sockaddr

*my_addr,

//指向数据结构sockaddr的指针

int

addrlen)

//可以设置成sizeof(structsockaddr)

int

listen(

//监听已经绑定的端口,出错返回-1.

int

sockfd,

//socket()返回的套接口文件描述符

int

queue_length)

//最大连接请求数

int

select(

int

nfds,

//select监视的文件句柄数,视进程中打开的文件数而定。

fd_set

*readfds,

//select监视的可读文件句柄集合

fd_set

*writefds,

//select监视的可写文件句柄集合

fd_set

*exceptfds,

//select监视的异常文件句柄集合

struct

timeval

*timeout)

//select的超时结束时间

相关宏:FD_ZERO(fd_set

*fdset):清空fdset与所有文件句柄的联系FD_SET(int

fd,fd_set

*fdset):建立文件句柄fd与fdset的联系

FD_CLR(int

fd,fd_set

*fdset):清除文件句柄fd与fdset的联系

FD_ISSET(int

fd,fd_set

*fdset):检查fdset联系的文件句柄fd是否可读写,表示可读写。

int

accept(

//响应连接请求,建立连接。成功返回一个新的套接口文件描述符,用来调用send()和recv()。

int

sockfd,

//正在监听端口的套接口文件描述符

//函数调用后被填入对方的地址信息

//

sizeof(structsockaddr_in)

int

connect(

//向Server发送连接请求int

sockfd,

//socket()返回的套接口文件描述符

指向数据结构sockaddr的指针,其中包括目的端口和地址

int

addrlen)

//

sizeof(structsockaddr)

int

(

int

sockfd,//数据报套接口文件描述符

void*

buf,

//指向接收信息缓冲区,用于保存接收信息

int

len,

//

unsigned

int

flags

//置0

struct

from,//指向本地计算机包含源IP地址和端口号的数据结构sockaddr的指针

int*

fromlen)

//

sizeof(struct

sockaddr)

int

sendto(

int

sockfd,

//数据报套接口文件描述符

const

void

*msg,

//指向要发送的数据的指针

int

len,

//数据字节长度unsigned

int

flags,

//置0

const

struct

sockaddr

*to,

//指向包含目的地址和端口号的数据结构sockaddr的指针

int

tolen)

//

sizeof(structsockaddr)

int

(

//关闭特定的socket连接

int

sockfd)

注:关闭用于listen()函数的socket将禁止其他Client的连接请求

int

shutdown(

//该函数可以单方面中断连接,即禁止某个方向的信息传递,成功返回0,出错返回-1.

int

sockfd,

//要禁止的套接口文件描述符

int

how)

//0—禁止接收信息;1—禁止发送信息;2—禁止接收和发送信息类成员数据Client.h: SOCKET m_hSocket; //访问TCP和UDP网络服务的方便途径 CString m_strFileName; //文件名称 HICON m_hIcon; //可执行文件的图标

Server.h: SOCKET m_hSocket; //访问TCP和UDP网络服务的方便途径 CString m_strFilePath; //文件路径 char* pBuffer; //存储缓存区地址 int m_iSize; //缓存区大小 bool bAppend; //判断是否连接成功HICON m_hIcon; //可执行文件的图标类成员函数Client: void OnPaint(); HCURSOR OnQueryDragIcon();void OnOK(); void OnButtonBrowser(); void OnCancel();Server: void InitSock(); bool GetCurSelMode(); void ShowPIC(); void ShowPIC(char*buf,intiSize); void RevFile(constSOCKET&s);CFunctionName(函数名称)【函数式样】表2-1

函数名OnPaint函数作用范围protected文件名ClientDlg.h功能概要添加一个最小化按钮处理信息记述形式voidOnPaint();参数类型变量名I/O说明None返回值类型说明值详细说明1.添加一个图标按钮,获取图标的位置坐标和可执行文件图标。使用注意事项【函数式样】表2-2

函数名OnQueryDragIcon函数作用范围Protected文件名Client,h功能概要访问获取可执行图标的光标资源句柄记述形式HCURSOROnQueryDragIcon();参数类型变量名I/O说明None返回值类型HCURSOR说明值m_hIcon可执行图标详细说明1.调用该函数时返回一个可执行图标的光标资源句柄型对象使用注意事项【函数式样】表2-3

函数名OnOK函数作用范围Protected文件名Client.h功能概要检索文件记述形式void OnOK()参数类型变量名I/O说明None返回值类型说明值None详细说明创建一个线程发送文件并给出相应提醒在此增加额外的认可对通信数据进行初始化若文件路径有误则发送消息提醒使用注意事项使用指针传递【函数式样】表2-4

函数名OnButtonBrowser函数作用范围Protected文件名Client.h功能概要发送文件记述形式void OnButtonBrowser()参数类型变量名I/O说明None返回值类型说明值None详细说明1.发送各种图片类型文件使用注意事项【函数式样】表2-5

函数名OnCancel函数作用范围Protected文件名Client.h功能概要取消此次文件发送记述形式voidOnCancel();参数类型变量名I/O说明None返回值类型None说明值详细说明在此处添加一个额外清除关闭通信发送线程对客户端填充内容进行清除使用注意事项【函数式样】表2-6

函数名InitSock函数作用范围public文件名Server.h功能概要装HTTP断点续传记述形式voidInitSock();参数类型变量名I/O说明None返回值类型说明值None详细说明如果已经创建线程,则先关闭在INT上通信绑定数据监听线程数据使用注意事项【函数式样】表2-7

函数名GetCurSelMode函数作用范围public文件名Server.h功能概要判断按钮是否被检测到记述形式boolGetCurSelMode()参数类型变量名I/O说明None返回值类型bool说明值True按钮点击被检测到False按钮电钮没有被检测到详细说明1.用IsDlgButtonChecked(IDC_RADIO_BUF)函数判断按钮是否被检测到使用注意事项【函数式样】表2-8

函数名ShowPIC函数作用范围public文件名Server.h功能概要显示图片记述形式voidShowPIC()参数类型变量名I/O说明None返回值类型说明值None详细说明1.判断文件路径是否为空,如为空,则返回一个空值,跳出该函数2.如不为空,则按照一定得闻之数据显示图片使用注意事项【函数式样】表2-9

函数名ShowPIC函数作用范围public文件名Server.h功能概要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论