要求:任何一个客户端说的任何一句话,都会转发给所有客户端,(并在服务器端记录在聊天文件中,包括聊天时间信息.服务器只转发,不参与聊天.)
(每一个参与聊天的客户端要有自己的名字.在进入聊天室的时候输入.)
Server01:启动服务,循环等待连接,向已加入的Socket的集合list中添加针对新接入的客户端的Socket,利用ServerThread01的构造方法将当前Socket和集合list传入,并启动线程;
ServerThread01:接收当前Socket对应的客户端发来的信息并向所有的客户端转发;
Client01:连接服务器,创建读取线程和写出线程;
ClientReadThread01:读服务器发来的信息,并打印到控制台;
ClientWriterThread01:(获取用户名,向服务器写出.)循环读客户端的键盘输入,并写出到服务器;
Client02:再创建一个客户端用于实现多人聊天,当然还可以多建几个,由于代码一样,就不再多建了;
一、首先创建一个服务端:
1、设置服务器端口:
使用TCP中最为重要的ServerSocket 和Socket关键字,设置服务器端口1024~65535任意一个;
2、循环接收客户端的连接:
没连入一个新的客户端,将它保存到list集合中,便于之后的群发;
3、传入必要参数: 启动服务线程。
二、创建服务线程:
1、定义有参构造函数:
便于服务端的调用和初始化
2、读取Socket写入的数据:
以字节流来读取双向网络通信的另一端Socket的数据,将每个客户端口的第一行当做其名字,将所有读到的数据加上读取的时间一并写入 .txt 文件中
3、群发数据:
将读到的数据发送给所有连接到服务端的客户端口,使用for循环遍历出list集合中所有Socket来实现
三:客户端的创建:
1、确定服务端地址:
使用Socket设置连接的服务器IP地址和其以应用程序的数字标示,即端口号要与服务端数字一致,其中127.0.0.1指本机,一般用来测试使用;
2、开启线程:
传入参数,创建读、写线程的对象,并启动
3、客户二:同上
四、客户端读线程:
1、读出服务端Socket中分发出来的数据:
并将其发来的信息打印到控制台
五、客户端写线程:
1、键盘录入数据信息:
这里采用标准的输入System.in
2、写入信息:
用缓冲流包装字节流整行读取信息,在将信息写入到服务端的Socket,循环读写能够帮助你轻松的在聊天室中刷屏
3、退出群聊:
当输入break时,将关掉Socket,相应的输入输出也会关闭
六:运行服务器 --> 运行客户端1、2--->开启大家都是读书人,说话装逼点模式。
七、消息记录: