- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录
一、 需求分析 3
1.1系统目的 3
1.2 系统要求 3
1.3操作流程 3
1.4 开发工具及开发平台 4
二、 总体设计 4
2.1 系统功能 4
2.2系统架构 6
三、详细设计 8
3.1 传输协议设计 8
3.1.1程序描述: 8
3.1.2功能: 8
3.1.3性能: 8
3.1.4流程逻辑 9
3.2服务器详细设计 11
3.2.1功能描述 11
3.2.2流程介绍 12
3.2.3相关接口 12
3.3客户端详细设计 14
3.3.1功能描述 14
3.3.2流程介绍 14
3.3.3相关接口 14
3.4上传/下载详细设计 15
3.4.1上传 15
3.4.2下载 16
3.5 发送/消息 18
四、功能不足与扩展 20
五、个人感悟 21
六、参考文献 22
需求分析
1.1系统目的
通过LINUX课程设计,掌握进程和网络的系统调用以及进程和时间编程的工作原理,掌握GCC、SU、LS等基本命令的使用方法,熟悉C语言中进程和TCP编程结构。实现一个基于网络聊天软件系统。
1.2 系统要求
以Linux操作系统作为系统平台,设计采用C语言作为开发工具,采用Linux操作系统上的GCC编译调试方法。实现能够在局域网中的网络通信。
1.3操作流程
1、运行中必须先切换用户到根目录下找到文件,然后才能运行打开
2、用户在实际使用时,为了让客户端与服务器进行正常的连接,应该首先启动服务器,然后再启动客户端。
3、并且服务器在输入的主机IP地址正确时,才能够启动。
4、在客户端输入本机IP地址、端口号、用户名。
1.4 开发工具及开发平台
开发工具:Linux中的Vi编辑器,WindowsXP上的Source Insight 3
开发平台:redhat5( Linux OS)
总体设计
2.1 系统功能
此网络及时聊天系统实现了客户端与服务器端的点对点数据通信。首先运行服务器,进入服务器目录,在终端中输入./server,然后输入管理员账号和密码。管理员账号和密码存放在admin.txt文本文件中。运行后将在终端显示登录成功后的显示界面如图1。
然后输入字符2,运行服务器。运行后的界面如图2所示:
此时服务器已经启动成功了,然后启动客户端,首先打开另一个终端进入客户端目录运行./client 172.20.52.110 其中172.20.52.110为服务器IP,运行后终端上将显示入图3界面:
其中ID和PASSWD由服务器端创建的用户账号和密码,存放在
user.txt中。当正确输入用户名和密码后在终端上会分别显示出客户端的文件夹和服务器端的用户文件夹中的所有文件,具体显示界面如图4:
其中Client Files List显示的是客户端文件夹中的所有文件,Server Files List显示的是服务器端的用户文件夹中的所有文件。Client console显示的是用户的当前操作命令。便于用户根据提示输入命令。
2.2系统架构
本系统共分为客服端与服务器端两个模块,两个模块都利用面向连接服务器的请求,面向连接服务器处理的请求往往比较复杂,不是一来一去的请求应答所能解决的,而往往是并发服务器。使用面向连接的套接字编程时序如图5:
图5:服务器端与客户端的编程流程
三、详细设计
3.1 传输协议设计
3.1.1程序描述:
通信双方都需要遵循一定的数据结构,只有通信双方都遵守相同的标准,在通信的过程中才能准确的传送数据解析数据,而协议就是定义这样的标准。
3.1.2功能:
通过定义通信双方都需要遵循的数据结构,使对方能正常识别发送过过去的数据结构体。
3.1.3性能:
部分程序相对独立性较高,外部程序只需要在必要的时候调用该程序的接口就可以了,因此该程序容易集成,灵活性高;
协议结构体:
struct FilePackage
{
char cmd; //操作命令
int filesize; //每次传输数据包大小
int ack; //标志位
char username[50]; //客服端用户名
char filename[125]; //传输文件名
char buf[1024]; //传输文件的元数据
};
打包函数:
struct FilePackage pack(char tCmd, char* tBuf, char* tFilename, int tFilesize, int tAck,int count,char *uname)
{
struct FilePackage tPac
文档评论(0)