欢迎来到天天文库
浏览记录
ID:31304100
大小:289.35 KB
页数:19页
时间:2019-01-08
《华中科技大学计算机通信与网络实验报告-socket编程实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一Socket编程实验1.1环境开发环境:Windows1064位,IntelCorei5-7300HQCPU,8GB内存1.1.1开发平台MicrosoftVisualStudioCommunity2017结合QT5.9.21.1.2运行平台硬件配置:Windows1064位,IntelCorei5-7300HQCPU,8GB内存系统软件组件:WindowsSDK10.0.16299.0第三方组件:QT5.9.2MSVC20151.2系统功能需求基于TCP和UDP协议实现一个即时通讯工具,具体功能要求包括:工具包括服务器端和客户端;具备用户注册、登录、找
2、回密码功能(基于TCP协议);两个用户如果同时在线,采用点到点通信方式进行聊天,信息不需要通过服务器中转,服务器也不保存(基于TCP协议);支持离线消息(基于TCP协议);支持点到点可靠文件传输(基于UDP协议);存储在服务器端的数据需要进行强加密;支持不少于两组用户同时在线交流和传输文件;文件传输具有良好的性能,能够充分利用网路带宽;人机交互友好,软件易用性强。1.3系统设计1.3.1系统架构本即时通讯系统分为两大部分,分别为用户端和服务器端。用户端为用户提供交互界面,使用户能够进行用户注册、登录、找回密码、点对点聊天、发送离线消息、传输文件等操作。服务器则
3、为这些操作提供服务支持,包括存储用户数据、为用户提供好友列表、存放离线消息和匹配用户等等。1.3.2功能模块划分系统功能共分为6大模块,其中包括用户注册、用户登入、找回密码、好友列表、点对点聊天、传输文件。其中点对点聊天支持实时在线聊天和离线消息。此外,用户登录和注册时向服务器发送的密码。系统功能模块图如图1.1.所示图1.1socket编程功能模块①用户注册模块这一模块实现用户的注册功能。当用户填写正确信息后,注册内容将会被传到服务器。此时服务器将会把用户的注册内容与用户数据库屮的内容进行比较。如果用户名或邮箱与数据库中有重复,则提示注册失败。如果不重复,则
4、将新用户数据存入数据库,并在客户端提示用户,注册成功。①用户登入模块这一模块实现用户的登录功能。将用户输入的账号和密码与服务器数据库中的内容进行兀配。如果用户输入的账号存在,且账号和密码与数据库中的一致,那么用户登入成功。否则,提示登入失败。②找回密码模块这一模块实现用户的密码找回功能。当用户选择“找回密码”操作后,用户将进入找冋密码页面。在找冋密码页面,用户需要输入用户名和注册吋的邮箱。输入的内容会发送到服务器与服务器数据库中的用户信息进行比对。如果比对无误,将向用户页面呈递密码信息,否则将提示“找回密码失败”。③好友列表模块当用户成功登入后,将显示好友列表
5、界面。好友列表界面会根据服务器的数据库中的用户数据而提供所有用户名的列表(相当于每个注册者会成为所有人的好友)。用户点击相应的用户名,即可与对应的用户进行聊天。④点对点聊天模块这一模块实现用户之间的聊天功能。如果双方用户均在线,那么将直接实现点对点的聊天。如果只有一方用户在线,那么发送的信息会暂存到服务器;待另一用户上线后,服务器再将暂存的信息发冋该用户。⑤传输文件模块在建立点对点的连接后,一方用户可以向另一方用户发送文件。当发送方提交发送文件表单时,接收方会收到是否接收的表单。当接收方确认接收后,文件即会开始向接收方进行传输,直至传输完成。1.3.3应用层协
6、议设计①用户注册、登入、找回密码、点对点聊天以及离线消息的发送均采用TCP协议。使用QT库中的QTcpSocket/QTcpServer库进行实现。②点对点的文件传输采用的是udp协议,使用QT库屮的QUdpSocket实现。为了保证文件传输的可靠性,本程序采用了停等协议和超时重传的机制。1.4系统实现①服务器与客户端间的连接与交流服务器和客户端的连接是建立在TcpServer和TcpSocket的基础上的。在服务器端,一个TcpServer监听着来自固定端口的所有ip地址的连接;而在客户端,则在开启时,就向服务器所在IP和端口发起连接请求。在服务器正常工作的
7、情况下,客户端和服务器端就建立了相应的连接。在连接建立后,客户端和服务器端的相互交流就可以用TcpSocket来进行。TcpSocket->write()BP可发送相应的报文。为了使不同的报文得到不同方式的处理,报文的头部会加上一些前缀来进行区别。具体的前缀与功能如表1.1所示。表1.1Tcp报文头部的前缀及意义头部前缀发送方意义REGE客户端向服务器发送注册用户的请求LOGIN客户端向服务器发送登入请求RETR1客户端向服务器发送取回密码的请求ReqName客户端向服务器发送获取好友清单的请求QUIT客户端向服务器发送用户退出消息SEARCHPORT客户端向
8、服务器申请查询相应端口的用户是否在线S
此文档下载收益归作者所有