在编写java聊天室的过程中,让我学到了很多东西,有知识方面的,而更多的是经验。

从以前学习c,到现学习java,有很多的地方不习惯。主要的就是思想不会转变。但是还是有很多相似的地方,

比如,如何实现心中所想的东西时,很多函数的编写的方法是类似的,而不同的是java多了继承、多态、封装等等

面向对象的东西。所以在整体构思方面差异比较大,但是细节方面还是类似的。

编写聊天室让我对面向对象的了解算是更进一步了。

首先:聊天室实现的就是聊天;用户与用户之间实现聊天的功能。

然后:对于聊天这个功能如何实现呢?

1、要实现用户与用户之间的交流,必须要有一个通信实体做出“主动姿态”,主动接受来自其他通信实体的连接请求。这就是服务端。

2、客户端——用于连接到服务端,然后实现用户之间的通信。

所以这里的服务器和客户端便是两个对象,它们能实现用户之间的通信。

对于总体的构思擦不多就是这样。所以现在需要的便是一步一步的细化下去。

一、服务端

a)服务端如何实现主动接受其他通信实体的连接请求?

b)如何实现客户端之间信息的收发?

c)服务端应该有些什么样的功能呢?

二、客户端

a)如何连接到服务端?

b)客户端应该有些什么样的功能?

当慢慢的思考下去,思想便会慢慢的清楚。

再开始编写的时候,其实头是乱的,摸不着头绪,因为那时候开始的时候便在想:如何写连接?如何写收发信息?如何写连接?等等。也许这就是学c的时候的习惯思想,那时候写过的最大的程序便是俄罗斯方块,其余的便是在搞算法。不过当自己慢慢的习惯java的编程思想之后,便是好多了。

-----------------------------------------------------------------------

对于服务端和客户端的设计

1、服务器端的主要功能:

a)在特定的端口上进行监听,等待客户端连接。

b)默认端口为30000 。

c)向已经连接到服务的用户发送系统消息。

d)统计在线人数。

e)当停止服务器时,断开所有的用户连接。

2、客户端的主要功能:

a)连接到已经开启的聊天服务的服务端。

b)用户可以配置连接后显示的用户名。

c)当服务器端开启的话,用户可以随时登陆和注销。

d)用户可以向所有人或者某一个人发送消息。

主要类和方法:

一、服务端:

1、chatsever 便是服务器的主框架了。包括服务器的属于的定义、

组件的组合、事件的处理等等。

2、serverlisten 类是服务端的监听类。监听客户端是否连接。

3、serverreceive 类是接收和发送客户端、服务端的消息。

4、lnode 类封装了用户的属性。

5、userlinklist 类则是封装了对用户操作的方法。如:添加、查找、删除等;

6serverhelp 类这是帮助板块。

二、客户端

1、client 类 则是客户端的主要框架。

2、userset 类 是对用户名的设置和修改。

3、clientreceive 类 实现客户端和服务端消息的收发。

4、clienthelp 类 这是帮助板块。

(具体代码就不发了,太多了。。)

----------------------------------------------------------------------------------

对于聊天室的编写部分已经完成了,接下来便是完善它的功能和修复它的一些bug。因为发现有很多地方有bug:

1、客户端无法接收到服务端发出的系统消息。

2、服务端无法收到客户端下线的消息,导致服务端无法删除以下线的客户端。所以客户端连接重复。

3、当服务端停止服务时,客户端未断线。

4、客户端不能接收到其他客户端的上线和下线消息。

目前发现的bug就是以上几个。同时除了bug以外,还发现很多的不足:

1、客户端的ip设置是不能改变的,所以当服务端换ip时,客户端需要从源代码中去修改,导致不方便。

2、服务端、客户端没有设置快捷按钮,导致每次启动都要通过“菜单”来启动和连接。

3、所有的表现都是以文字表现的不能接收和发送图片。

以上是目前发现的不足点。希望能在修改之后得到完善。