断-殇 2016-11-24 11:20 采纳率: 0%
浏览 2150
已结题

多人聊天器,求大神发源代码!初来乍到,小弟实在不是很懂,望大神指教!在线等大神!

  1. 对功能的规定
    分必选项和任选项,其中,必选项是必须完成的,属于项目答辩的入口条件,所有人都要做,未完成者取消答辩资格; 任选项不是入口条件,但每完成一项都会加分,对于完成了必选项的同学,尽可能地多完成一些任选项,以期获得更高的答辩成绩。 如果所有项(包括必选和任选)都完成,那么功能分就是满分。 如果设计思路、界面效果、代码组织等方面有个性(或和别人的不同),则获得附加分。

1.1 服务器功能
1.1.1配置文件
属性:任选
描述:服务器的配置从配置文件中获取,内容包括服务器地址(服务器IP 和 port),具体格式如下:
SERVER_IP = 192.168.1.11
PORT = 12012
注意:具体IP和port以本地为准

1.1.2账户文件
    属性:必选
    描述:客户端注册的用户名和密码需要服务器保存。必须完成下列所有情况:
    ●内容为用户名和用户密码列表;
    ●必须用文本形式;
    ●用户注册用户名重复,需要提示重新选择用户名
    ●用户登录时用户名重复,需要提示重新选择用户名
    ●用户名密码输入错误,应该提示。给3次连续错误机会,超过3次退出。

1.1.3支持多客户端
    属性:必选
    描述:基于tcp协议的客户端服务器通讯,服务器采用多线程支持多个客户端连接。

1.1.4业务功能
    属性:必选
    描述:群聊,单聊

1.1.5链表记录会话连接
    属性:必选
    描述:服务端使用链表记录当前客户端的会话连接,多个线程访问同一个链表,采用互斥锁来控制。
          链表包含下列信息:客户端的ip地址、连接时间,用户名。

1.1.6链表记录动态维护
    属性:任选
    描述:服务端能够动态维护链表记录;服务器有命令供查询显示。

1.1 客户端功能
1.2.1注册
属性:必选
描述:客户端提供注册用户名,密码功能,用户名密码通过网络传输到服务器认证(用户名不可重复),认证通过后写入账户文件。

1.2.2登陆(认证)
    属性:必选
    描述:服务器和客户端增加用户密码登陆机制,包含如下流程:
      ●客户端把接受的用户名密码发送至服务器;
      ●服务器启动后从配置文件中读取用户信息形成数据表,根据此来验证密码。验证后返回认证结果给客户端(不可一个用户名同时登录)
      ●如果认证正确,服务器开始接受客户端的命令;认证错误重新认证(3次登陆错误退出)

1.3心跳机制
    属性:必选
    描述:客户端与服务端之间使用心跳机制,必须完成下列所有情况:
      ●客户端定时向服务端发送一个数据包(心跳包,内容不限,3秒间隔),证明自己活着;
      ●服务端显示来自某个IP地址客户端的心跳包;


1.4心跳异常
    属性:任选
    描述:服务器超过一定的时间没有收到客户端的心跳包(3秒间隔),连续5个包没有接收到则说明客户端出现问题,必须做出如下的处理:
      ●记录状况;
      ●断开连接;

1.5聊天功能
    属性:必选
    描述:两客户端之间能够直接文字通信(类似于QQ聊天),
      ●能够查询在线列表,具体信息从服务器的链表记录获得;
      ●可以和别的客户端聊天,发数据采用“用户名后面加数据”方式;

1.6日志文件
    属性:任选
    描述:服务端通过一个日志文件记录所有客户端连接、命令执行、断开信息(时间,IP地址,执行的命令,心跳包超时等)。 例如:“客户端连接时间 客户端IP地址 客户端的命令 数据包类型(就是上面1.6的data_type) 客户端发送的信息 ”。

2.对性能的规定

本系统在设计方面本着方便、实用的宗旨,性能方面应遵循如下原则:
●执行效率(时间): 软件运行应该尽量高效;避免没有必要的循环处理、重复处理;
●资源损耗(空间):设计尽量节约资源(内存、数组、链表等);不用的资源要及时释放;
●初始化: 变量、数组、内存块、链表节点(其next要置NULL)等都要初始化;
●健壮性:不能出现野指针、内存泄露、数组越界访问等等:
◎申请内存之后,应该立即检查指针值是否为NULL;动态内存的申请与释放必须配对,防止内存泄漏。释放了内存之后,立即将指针设置为NULL,防止产生“野指针”;
◎函数的入参必须进行有效性判断;用户输入、函数返回值(如果用到的话)都要判断;
◎switch-case一定要有default;if-else if等后要有else,除非if满足后返回或退出;
◎数组的下标不要发生“多1”或者“少1”操作。

3.对排版的规定

●缩进要对齐;
●长行拆分;
●二元操作符的前后应当加空格,包括如下操作符:
赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如"="、"+=" ">="、"<="、"+"、"*"、"%"、"&&"、"||"、"<<", "^" 等;
●空行:
◎结构体 声明之后、每个函数定义结束之后都要加1行空行;
◎逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔;
◎一行代码只做一件事情;
◎"if"、"for"、"while"、"do"等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 "{ }";

4.对可维护性的规定

对可维护性的最终要求:别人能够轻松上手你的代码。
●结构清晰:
◎模块化:对界面(显示)、菜单管理、逻辑管理、文件操作等等代码要独立,必须多个.java文件;
◎封装:一个函数只做一件事,函数功能要单一;一个函数不能超过50行;
避免重复、冗余代码;
◎代码块清晰。
●变量命名规范,变量名应该具有自明性:
◎常量,枚举和宏定义命名
常量名,宏和枚举值由全大写字母组成,单词间通过下划线来界定;
◎函数的命名:
使用"动词"或者"动词+名词"(动宾词组)的形式,由一个或多个单词组成且以小写字母开头,以后每个单词的首字母必须大写
◎变量的命名与定义
应当使用"名词"或者"形容词+名词",由一个或多个单词组成且以小写字母开头,以后每个单词之间用下划线隔开。
●注释充分:变量、函数(包括参数、返回值)、代码功能块、一些复杂算法……等都需要
清晰明了地说明;

5.对个性的规定

把项目做出个性出来。下列各项中有和比人不同之处、或很有创意,即可认为有个性。独立设计的软件,一般都会出现一些个性。参考、抄袭不会出现个性。

●设计思路:包括软件的整体架构、功能块的设计思路、函数封装等等;
●功能实现:从用户的角度,使用上发现与众不同的地方;
●其它方面;

  • 写回答

6条回答 默认 最新

  • 断-殇 2016-11-24 11:50
    关注

    各位大神级别的哥,能不能解个惑啊,愁死了!

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!