在线聊天系统雏形总结

在线聊天系统的雏形,是对我学习了J2SE的基础之后,开发练手的第一个项目;

该项目分成如下几个步骤,并对每个步骤的知识点,做一定的小结:

1. 产生一个窗口:

主要用到的知识点是,从Frame中继承;

2.窗口的初步布局:

主要用到TextField和TextArea 两个Api函数;

3.加入窗口关闭事件:

主要用到 匿名类,此处是一种固定的写法,如下:

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e) {
disconnect();
System.exit(0);
}

});

4.加入TextField事件处理:

主要用到addActionListener();

5.加入ChatServer:

主要考察ServerSocket通信;

6.Client端连上服务器端:

在ChatClient中添加一个connect方法,并在launchFrame中调用;

7.客户端给服务器端发消息:

想要发送消息,就要拿到这个Socket,将上面版本中作为局部变量的Socket,转变成成员变量;

在ChatServer中接受客户端传来的消息,并打印出来;

8.修正上个版本,使客户端可以发送多个语句:

通过在ChatServer中定义两个boolean类型的变量,来控制服务器的启动  和  客户端的连接;

9.修正一些bug;

10.连上多个客户端:

首先,需要使用一个List的泛型集合来装载各个连接的client;

此处ChatServer程序需要大幅修改,使用线程解决一个线程控制一个客户端,因此在ChatServer程序中写一个Client内部类,代表客户端那边在服务器这边的包装;

11.服务器转发消息:

此处只需修改ChatServer,在内部类Client中写一个send()方法往外写,同时通过内部类Client中的run方法调用send方法;

12.客户端接受消息

通过线程来接受消息;

13. 修改当关闭一个Client之后,再在其中某个Client中输入时报错:

原因是:在run方法中会调用c.send(str),不过在这是Client已经关闭,所以在向他发送,会报错;

解决办法是:在send方法中捕获异常的时候去掉当前的client;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值