您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 软件开发设计文档模板
软件开发设计文档文档管理信息表主题web服务器版本1.0内容可响应客户端发送文件请求的web服务器关键字套接字,请求报文,响应报文,tcp编程参考文档无创建时间2016/4/2创建人吴鑫最新发布日期2016/4/2文档变更纪录更改人日期更改内容何鑫2016/4/4创建文件目录1开发规划11.1开发人员11.2开发计划21.3开发环境和工具31.4开发规范32总体设计42.1概念术语描述42.1.1术语142.1.2术语242.3主要界面流程描述72.3.1功能1界面流程72.3.2功能2界面流程72.4模块列表83数据结构94接口规范104.1模块1API104.1.1Interface1104.1.2Interface2104.2模块2API114.3模块3API114.4数据库API115模块设计125.1MODULE1设计125.1.1模块设计描述125.1.2模块界面描述125.2MODULE2设计136附录146.1第三方组件146.2参考资料156.3附加文档15开发规划开发人员角色主要职责负责模块人员备注何鑫负责编写窗口界面创建通信套接字建立连接获取http请求,解析请求报文封装文件到http响应报文中,并发送该响应报文软件的测试与优化xxx模块xxx开发环境和工具开发工具工具作用Microsoftvisualstudio2010web服务器,窗口界面总体设计概念术语描述术语1静态文本框术语2请求报文响应报文基本设计描述1.传入一个与某个浏览器通信的套接字2.启动一个线程来监听浏览器接收到的数据recive3.如果监听浏览器的请求报文了,要:3.1要将请求报文显示在服务器软件的文本框中3.2要分析浏览器发来的请求报文3.3要根据请求报文处理浏览器的请求页面4.生成响应报文,并输出到浏览器T5.关闭当前连接主要界面功能流程描述功能1界面流程1.使用vs2010创建一个基于c#的窗体程序2.使用静态文本框,按钮等元素布置界面3.添加显示文本框用来显示“ip”,“端口号”,和“日志”3.给两个按钮的text重命名并在name里给其命名4.最终窗体界面如图所示:(注:我们默认服务器的ip地址为127.0.0.1,端口号为5004)功能2创建浏览器和服务器的通信流程数据结构数据库表列表表名作用endpoint网络节点对象,用来传入ip号和端口号adress用来获得IP这个文本框里面的内容,为将套接字绑定到端口号中做准备threadwatch创建负责调用套接字监听的线程sokwatch负责监听浏览器的套接字sokconnection接收浏览器请求并生成相应的通信套接字对象isrunning用来控制监听循环是否退出模块列表模块名称(英文)功能备注模块1sokwatch.Bind(endpoint)将套接字绑定到指定的端口号上模块2sokwatch.Listen(10)设置监听队列(监听套接字能够同时处理的浏览器连接请求最大个数)模块3voidwatchConnectt()监听浏览器的连接请求模块4threadwatch=newThread(watchConnectt)实例化线程模块5threadwatch.Start()启动线程模块6voidshowmsg(stringmsg)用来在txtmsglog文本框中显示相应的连接信息功能3接收请求报文流程模块列表模块名称(英文)功能备注模块1publicdelegatevoidDGshowmsg(stringmsg)用来在控件上显示消息的委托类型新建类Dataconnection模块2publicdelegatevoidDGshowmsg(stringmsg)用来在控件上显示消息的委托类型新建类Gshowmsg,并用委托类型模块3publicDataconnection(Socketsokconnection,DGshowmsgdgshow)在Dataconnection类里,通过在构造函数传入参数的方式来传入与某个浏览器通信的套接字和线程模块4this.threadconnection=newThread(recmsg);直接在内部来创建通信线程对象模块5this.threadconnection.IsBackground=true;this.threadconnection.Start();启动该线程,并将其设置为后台线程arrmsg模块6length=sokconnection.Receive(arrmsg);将浏览器发来的数据装入缓存区,并获得真实的数据长度模块7Try{}Catch{}调用委托对象来在文本框中打印异常消息模块8dgshow(recmsg);在文本框中显示消息数据结构数据库表列表表名作用conn创建Dataconnection类对象,并传入当前套接字和线程arrmsg字节数组,当做缓存区length用来存放浏览器发来的数据的长度recmsg用来存储已转换成字符串类型的数据功能4分析请求报文流程模块列表模块名称(英文)功能模块1publicHttpRequestmodel(stringrequeststr){}生成请求报文实体对象,并分析请求报文字符串,将每个语义字符都次实体类的相应属性中模块2string[]arrequest=requeststr.Replace(\r\n,籀).Split('籀');这里表示的是将‘\r\n’转换成‘籀’,便于处理,并分割字符模块3string[]firstrow=arrequest[0].Split('');按照控件将已经分割好的字符再分割模块4给路径赋值数据结构数据库表列表表名作用path定义页面路径字符串功能5读取文件流程模块列表模块名称(英文)功能备注模块1dataDir=System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;获得浏览器请求文件的物理路径默认该请求文件在工程目录下模块2Switch()根据{Case:Case:}请求文件的后缀名不同来做出不同的判断模块3voidProcessstaticPage(stringpath)该方法用来专门处理静态文件模块4using(FileStreamfs=newFileStream(path,FileMode.Open)){}使用文件流的前提是要为FileStream导入命名空间方式来读取文件数据结构数据库表列表表名作用requestModel在dataconnecton类里创建请求报文实体对象dataDir用来存放当前执行程序的物理路径fileDir存储请求文件的物理路径extentionName存储请求文件的后缀名功能6生成响应报文流程模块列表模块名称(英文)功能备注模块1publicbyte[]GetHttpResponseHeader(){}返回响应报文头字符串默认该请求文件在工程目录下模块2return返回System.Text.Encoding.UTF8.GetBytes(sbResponse.ToString());请求文件的字节数组模块3sokconnection.Send(model.GetHttpResponseHeader());利用套接字来将响应报文头发送回去模块4使用文件流的方式来读取文前提是要为FileStream导入命名空间件数据结构数据库表列表表名作用arrfile以二进制形式存储的文件数据contentType默认的响应内容的类型sbResponse用来显示响应报文头model生成响应报文头对象附录第三方组件使用的命名空间:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Net.Sockets;usingSystem.Net;usingSystem.Threading;参考资料自己动手写web服务器(视频版)
本文标题:软件开发设计文档模板
链接地址:https://www.777doc.com/doc-5716943 .html