您的位置:首页 > 理论基础 > 计算机网络

Java 网络编程(TCP)实现服务器与客户端1对多的随意顺 序的聊天室

2015-07-12 19:35 459 查看
要求:任何一个客户端说的任何一句话,都会转发给所有客户端,(并在服务器端记录在聊天文件中,包括聊天时间信息.服务器只转发,不参与聊天.)

(每一个参与聊天的客户端要有自己的名字.在进入聊天室的时候输入.)

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--->开启大家都是读书人,说话装逼点模式。



七、消息记录:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息