尚学堂在线聊天雏形Chat学习笔记

来源:互联网 发布:黑手党3和dlc 知乎 编辑:程序博客网 时间:2024/05/08 05:23
      这是在完成后尚学堂的在线聊天雏形后的学习笔记 记录了当时写代码时的思路 
写下一份学习笔记 不紧可以回顾 也可以学找到容易犯错的地方。

=========================================


1、建立起客户端窗口
创建一个ChatClient类继承Frame
拥有输入框TextField和输出框TextArea 
2、通过添加匿名类来监听窗口 
          this.addWindowListener(new WindowAdapter(){//匿名类
               public void windowClosing(WindowEvent arg0){
                    System.exit(0);
               }
          });
3、创建一个内部类TFListen继承ActionListener 监听tfText 把输入框的信息传到输出框
      这行代码 tfText.addActionListener(new TFListen()); 一定不能遗漏
4、创建一个ChatServer类
起初这个类里并没有写太多的代码 只是简单的建立了连接 并写了测试语句在控制台输出
5、将部分代码封装
在ChatClient中 添加了connection()和disConnetion()两个方法,将部分代码封装起来。
Client连接至server后 生成对象 通过 dos = new DataOutputStream(s.getOutputStream()); 和dos.writeUTF(str);
准备将数据上传至server中。
在ChatServer中 通过s = ss.accept(); 收到Client的请求后 准备接受数据
dis = new DataInputStream(s.getInputStream());
String str = dis.readUTF(dis);
 6、运用线程 多个Client连接至server
创建一个Client类接口Runable 
s = ss.accept();成功执行后 调用Client c = new Client(s);
在run方法中 主要运行String str = dis.readUTF(dis); 读取数据
最后这行代码一定不能遗漏 new Thread(c).start();
7、服务器端向客户端转发消息
用dos读取数据 dos.writeUTF(str) 转发数据
这里将Client存入ArrayList中 在run方法中再一个一个读取出来 
这一步 其实还不是很懂 还有待琢磨
现在只完成了一半 那就是服务器端转发出去了 客户端还没有接受到
下一步就是在客户端接受数据
8、客户端接收服务器端转发的数据
创建类RecThread接口Runable  向多个客户端转发数据
完成这一步代码也不多 难度也不大 
但是最后运行的时候出现了问题 
输入框输入数据后 后台可以收到 但是在输出框没有任何显示
也就是说 数据是上传到server端的 在server向客户端转发的时候出现了问题
在server端这段代码中做了调试 加了第二个后台打印 第一个在后台是可以正常输出的
果然第二个不能正常输出 
再往前看代码
最后一行代码遗漏了 也就说接受到的客户端没有存放到ArrayList中。
真是忧伤。


=======知识点总结========
1、网络编程 
     基于Socket的低层次Java网络编程
2、集合框架中的ArrayList
3、IO流
4、多线程
5、图像界面GUI
当然这个小小项目只是设计到了各个知识点的冰山一角 还有更多的等我们去挖掘。

0 0
原创粉丝点击