基础知识点:
1. Socket
2. IO流
一、 创建客户端
1. 新建客户端类ChatClient;
2. 通过继承Frame类创建窗口;
3. 在窗口中添加可输入的文本区TextField,和显示文本区Textarea;
4. 添加窗口关闭功能,重写windowclosing方法
二、 创建文本区域
输入文本后,显示文本区域显示输入框中输入的内容,所以为tfTXT添加监听器,选择内部类
三、 创建端口连接
1. 新建客户端类ChatServer;
2. 通过ServerSocket启动服务,创建连接的端口
ServerSocket ss=new ServerSocket(8888);
3. 用accept接收客户端发来的信息
Socket s =ss.accept();
运行后启动server,但是不能多次运行,会报端口被占用bug。可以关闭server重启
四、 创建端口连接
在窗口打开时立刻连接服务端,建一个connect方法:
Sockets=new Socket("10.106.30.32",8888);
五、 将客户端文本框输入的数据发送到服务器端
1. 将Socket s改为全局变量,才能在TFListener中拿到Socket数据;
2. 客户端将字符串往外发送字符串
DataOutputStream doS =new DataOutputStream(s.getOutputStream());
dos.writeUTF(str);
3. 服务器端接收客户端发送的数据
DataInputStream dis =newDataInputStream(s.getInputStream());
String str=dis.readUTF();
运行结果为,客户端第一次输入hello时,服务器收到了并打印了出来,
客户端第二次输入world时,客户端报错
每次输出时我们用了dis.close,注释掉
在结束时清理资源,写一个清理资源的方法disconnect,窗口关闭时断开与服务器的连接
服务器要多次读取数据,所以需要写一个循环,或者while()函数做个判定
当服务器启动时,服务器开始接收数据
当服务器与客户端连接成功后,开始读取数据
一台客户端可以成功发送多个数据
六、 多台客户端连接服务器
多个客户端同时连接服务器端,会出现阻塞,因为readUTF();为阻塞型函数,所以需要建立多个线程,将接收客户端的线程,和处理 客户端数据的线程分开
Client()专门处理线程