一、设计题目:嵌入式Linux系统下的局域网聊天软件设计
二、系统组成:
系统主要由客户端和服务器组成。
客户端由用户使用,负责与用户的交互。用户可以使用客户端登录聊天室进行聊天。要求最好有一个客户端为Cortex-A9嵌入式实验系统。
服务器主要负责用户消息的处理和转发,所有用户消息必须经由服务器发送至其他用户。
三、系统要求
1. 采用Linux系统下的C、C++或Python语言设计。
2. 服务器和客户端使用TCP协议进行通信,同时使用特定的端口号。服务器有着固定的IP地址,每个客户端有不同的IP地址。
3. 首先需要保证服务器正在运行中,才可以处理客户的消息。
4. 用户通过客户端的界面进行操作,客户端与服务器进行通信,将要发送的聊天消息和相关信息使用Socket发送给服务器。
5. 服务器按照消息的发送设置(群聊、私聊等)将消息发送给特定的用户。
四、系统设计
1. 客户端
(1)功能设计
客户端需要完成以下功能:用户登录、用户输入消息、将消息发送至服务器、显示当前在线用户列表、显示当前其他用户发送的消息。
系统在terminal环境下运行,可以使用end和sendTo两条指令控制程序的运行。
当在消息输入框中输入end并回车的时候,系统退出,并下线。
在消息输入框中输入sendTo时进入私聊状态,首先需要输入发送至哪个用户,然后接着输入消息,并且发送时该消息将只会发送给指定用户,并在客户端中显示该信息为private状态。
当初次打开客户端时会出现要求用户输入用户名的界面,在用户输入用户名后系统获取当前计算机的IP地址,并将用户名和IP地址发送至服务器。
当服务器发送更新当前在线用户的信息时,客户端系统需要对在线用户进行处理,更新当前在线用户的显示。
客户端中需要将其他用户发送的信息显示出来,并且不断更新,本机发送的消息也将显示在用户发送的消息里。
(2)界面设计
客户端的界面由当前在线用户,消息输入框,消息历史组成。为了同时在
terminal中显示这些信息,可对terminal界面进行分屏显示。
2. 服务器
服务器主要处理客户端发送的消息,按照一定的通信协议根据客户端的要求定向转发。服务器主要完成的功能有:处理用户的上线下线,保存上线用户的用户名和IP地址,将客户端要群发的信息群发给所有用户,将客户端发送给特定用户的信息发给对应的IP地址。
可以使用在消息中加入头标签的方式让服务器处理。当客户端发送消息时,如果是上线消息则头标签为数字1和2,如果是群发消息则没有头标签,如果是针对特定用户的私密消息则头标签为3,且后跟要发送至的目标用户名。