您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > TCP服务器与客户端软件
山东建筑大学实验报告学院:信电学院班级:电信102姓名:公维蒙学号:2010081266课程:应用软件综合实验实验日期:2013年12月日成绩:11实验目的1.理解和掌握软件工程的设计理念与设计方法。2.掌握某种数据库管理以及可视化编程环境,掌握基于某种编程语言的信息系统或网络通信软件或某种通用总线接口的通信软件的开发设计方法。2实验题目及要求题目:TCP服务器与客户端软件本题目要求使用TCP协议实现若干台电脑之间的通信。1.任何一台电脑都具有收发信息功能。2.具有记录查询通信纪录的功能。3.有图形化界面。4.服务器可同时与多个客户端通信。分别实现服务器和客户端的程序。山东建筑大学实验报告学院:信电学院班级:电信102姓名:公维蒙学号:2010081266课程:应用软件综合实验实验日期:2013年12月日成绩:23实验系统设计3.1需求分析:本次实验的题目是TCP服务器与客户端软件,本题目要求使用TCP协议实现若干台电脑之间的通信。软件针对局域网内部用户,实现用户间的即时通信。需要分别实现服务器端和客户端的软件设计,并有图形化界面。服务器端负责监听用户连接请求,负责连接数据库存储用户信息,负责发送给用户好友信息,负责发送心跳报文检查用户在线状态并即时让用户更新好友在新信息。客户端发起主动连接,向服务器请求登录或者注册。客户端可以修改昵称,可以加已知用户为好友(类似于MSN的好友添加功能)。客户端之间可以发起P2P模式的聊天,可以传送文件。3.2主要理论依据:1.TCP——传输控制协议:TCP协议提供的是可靠的、面向连接的传输控制协议,即在传输数据前要先建立逻辑连接,然后再传输数据,最后释放连接3个过程。TCP提供端到端、全双工通信;采用字节流方式,如果字节流太长,将其分段;提供紧急数据传送功能。TCP要求在发送数据之前必须打开连接。服务器应用程序必须执行一个称作被动打开(passiveopen)的操作,以利用一个已知的端口号创建一个链接,这是,服务器并不是对网络进行呼叫,而是侦听并等待引入的请求。客户应用程序必须执行一个主动打开(activeopen),为此,它向服务器应用程序发送一个同步序列号(SYN)以标识连接。客户应用程序可以将动态端口号作为本地端口使用。服务器必须向客户发送一个确认(ACK)以及服务器的序列号(SYN)。随后,客户回复一个ACK,这样就建立了链接。现在可以发送和接收消息了。接收消息后,总是返回ACK消息。如果在收到ACK之前发送方已经超时,则消息将被放到重发队列中以再次发送。由于它的握手机制,所以TCP协议比较复杂并且费时,但此协议在处理数据时对数据包的传送有保障,从而使得在应用程序协议中不需要再包括该功能。山东建筑大学实验报告学院:信电学院班级:电信102姓名:公维蒙学号:2010081266课程:应用软件综合实验实验日期:2013年12月日成绩:32.套接字:套接字这个术语并没有定义某个协议:它具有两层含义,但两者都与一个协议相关。第一个含义是套接字编程API,它最初由伯克利大学为BSDUNIX而创建。BSD套接字在经过修改后被用作Windows环境的编程接口(并且被命名为WinSock)。WinSockAPI被包装在System.Net.sockets命名空间的.NET类中。WindowsSockets是一个独立于协议的编程接口,用于编写网络应用程序。套接字的第二层含义表示一个用于在进程间进行通信的终端。在TCP/IP中,每个终端都与一个IP地址和一个端口号绑定。我们必须对流式套接字和数据报套接字这两种类型进行区分。流失套接字用TCP/IP协议来使用面向连接的通信;另一方面,数据报套接字用UDP/IP来使用无连接通信。3.C/S模型:客户机/服务器模型,又称为Client/Server模型,简称C/S架构。C/S计算技术在信息产业当中占有重要的地位。这种客户机/服务器模型是一种非对称式编程模式。该模式的基本思想是把集中在一起的应用划分成为功能不同的两个部分,分别在不同的计算机上运行,通过它们之间的分工合作来实现一个完整的功能。对于这种模式而言其中一部分需要作为服务器,用来响应并为客户提供固定的服务;另一部分则作为客户机程序用来向服务器提出请求或要求某种服务。在此“服务器”是指能在网络上提供服务的任何程序。服务器接受网络上的请求,完成服务后将结果返回给申请者。对于简单的服务,把每个请求用一个IP数据报发给服务器,服务器用另一个数据报返回响应。客户机和服务器都是独立的计算机。当一台连入网络的计算机向其他计算机提供各种网络服务(如数据、文件的共享等)时,它就被叫做服务器。而那些用于访问服务器资料的计算机则被叫做客户机。严格说来,客户机/服务器模型并不是从物理分布的角度来定义,它所体现的是一种网络数据访问的实现方式。采用这种结构的系统目前应用非常广泛。如宾馆、酒店的客房登记、结算系统,超市的POS系统,银行、邮电的网络系统等。各种网络服务器基本都遵循同样的算法:创建一个端口(Port),接受从网络上来的客户服务请求,完成计算后把结果返回给客户,如此反复。山东建筑大学实验报告学院:信电学院班级:电信102姓名:公维蒙学号:2010081266课程:应用软件综合实验实验日期:2013年12月日成绩:43.3系统基本构架:基于C/S架构的即时通信软件便于对用户信息进行统一管理和保存,面向特定的用户,对信息的安全控制能力很强。为了减轻服务器负担,客户端之间的信息传递是采用P2P模式的,服务器只负责用户的注册,登录和用户在线状态的检验。基本结构如图:CLIENTCLIENT注册和登录信息SERVER返回信息注册和登录信息返回信息聊天信息,文件传输3.4功能模块设计:CLIENT:1.注册:(1)可以完成客户端注册,客户端可以通过填写信息进行注册,信息被发送到服务器端。2.登录:(1)客户可以输入账号和密码进行登录,客户端会发送登录信息等待服务器响应,登录成功后会发出登录成功信息并刷新好友列表。3.修改:(1)密码修改:应该有密码修改功能(2)信息修改:可以更改一些注册信息4.通信:(1)即时聊天模块:客户端与客户端之间建立线程进行即时聊天,也包含有简单的对称加密山东建筑大学实验报告学院:信电学院班级:电信102姓名:公维蒙学号:2010081266课程:应用软件综合实验实验日期:2013年12月日成绩:5算法功能。(2)好友列表:可以对好友列表进行添加删除等动作5.文件传输:(1)文件传输:文件传输功能SERVER:1.注册回应:对客户端传送的注册信息进行判断。(1)HASH加密:对用户的账号和密码信息进行HASH加密(2)重复用户检查:将加密后信息与已存在账号进行比较,检查是否账号已存在,如果存在就返回错误信息(3)注册成功:将可成功注册的用户账号和密码写入数据库内,并向客户端返回成功信息2.修改回应:(1)对密码和信息修改请求进行判断,执行和返回修改成功信息3.登录回应:(1)对登录的账号和密码进行加密检查后发回正确或错误情况,并记录上线信息(2)好友列表发送:给成功登录的账号发送好友列表及好友上线信息(3)上线信息发送:给成功登录的账号的好友发送在线信息(包括IP,端口等等信息)4.在线情况:(1)对登录,在线,离线的用户情况进行统计,记录和通知(2)心跳测试:每隔一段时间发送报文测试用户是否因意外原因离线(3)情况记录:将用户登录时间,IP,下线时间等信息记录入数据库3.5逻辑图:具体逻辑图如下图所示:山东建筑大学实验报告学院:信电学院班级:电信102姓名:公维蒙学号:2010081266课程:应用软件综合实验实验日期:2013年12月日成绩:6注册登录注册回应在线情况CLIENTSERVER用户信息管理密码修改信息修改取得好友列表修改回应HASH加密注册成功登录回应好友列表发送上线信息发送注册信息检查注册失败YN心跳测试N离线文件传输消息加密消息解密即时聊天在线情况记录Y山东建筑大学实验报告学院:信电学院班级:电信102姓名:公维蒙学号:2010081266课程:应用软件综合实验实验日期:2013年12月日成绩:73.6数据库设计:服务器是作为记录和读取数据库信息的载体,与客户端关系并不复杂,这里需要重点考虑客户端之间的关系。用户与用户之间的关系是较为特殊的递归关系,即描述发生在两个相同实体上的关系。E-R图如下:数据库包含两个表,分别为记录用户信息的TCP_Userinfo和记录用户好友信息的TCP_Friendinfo。详细设计见下面两表:聊天文件传输nn用户ID好友ID状态IP客户端账号昵称EmailID密码好友分组状态客户端账号昵称EmailID密码好友分组IP山东建筑大学实验报告学院:信电学院班级:电信102姓名:公维蒙学号:2010081266课程:应用软件综合实验实验日期:2013年12月日成绩:8表1用户信息表TCP_UserInfoTCP_Userinfo列(属性)名类型主键宽度是否允许为空备注UserIDnumericY9NOTNULL自增长UserAccountncharN20NOTNULL用户帐号UserNicknamencharN20NOTNULL用户昵称,可重复UserEmailncharN20NOTNULL用户EMAILJoinDatencharN35NOTNULL注册日期LastLoginncharY20NOTNULL最后登录IPUserIPncharY20NOTNULL用户IPUserFavvarcharN100NOTNULL用户好友分组,有默认值UserQuestionncharY20NOTNULL密码问题UserAnswerncharY20NOTNULL密码答案UserPasswordncharN20NOTNULL用户密码UserOnlineintN4NOTNULL在线状态,1在,0不在表2用户好友表TCP_FriendInfoTCP_Userinfo列(属性)名类型主键宽度是否允许为空备注InfoIDnumericY9NOTNULL自增长UserIDncharN20NOTNULL用户IDFriendIDncharN20NOTNULL用户好友IDFriendGroupncharN20NOTNULL用户好友分组山东建筑大学实验报告学院:信电学院班级:电信102姓名:公维蒙学号:2010081266课程:应用软件综合实验实验日期:2013年12月日成绩:94系统实现4.1使用XML定义的即时通信协议:信息结构MESSAGE.CS&UMESSAGE.CS这两个C#类定义了包括服务器信息,状态信息,注册信息,登录信息,聊天信息或者请求文件传输信息的函数,服务器和客户端通过将它们实例化和序列化再转换成流在网络上进行传输。UMESSAGE.CS主要代码如下:[Serializable]publicclassUMessage{publicUMessage(){}privatestring_nickname;privatestring_password;privatestring_accounts;privatestring_email;privateint_info;//表示注册或者登录信息,客户端信息0为注册,1为登录;服务器返回信息0为用户已存在,1为注册成功,2为服务器未知错误,3为CLIENT在线检查,10为登录失败,11为登录成功privateFriend[]_friend;privateint_fn;privatestring_fg;publicstringNickname{get{return_nickname;}set{_nickname=value;}}publicstringPassword{get{return_password;}set{_password=value;}}publicstringAccounts{get{return_accounts;}set{_accounts=value;}}山东建筑大学实验报告学院:信电学院班级:电
本文标题:TCP服务器与客户端软件
链接地址:https://www.777doc.com/doc-2403284 .html