java socket实现多客户端群聊
发布日期:2021-06-30 18:38:57
浏览次数:2
分类:技术文章
本文共 4215 字,大约阅读时间需要 14 分钟。
服务器端主要是接收客户端发送过来的信息,并将该信息发给所有的客户端
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.ArrayList;import java.util.List;/** * */class Chat extends Thread { private Socket socket; private List客户端主要是两个类,一个是接收服务器端发送过来的信息,一个是向服务器发送客户端输入的信息socketList; private int count; public Chat(int count, Socket socket, List socketList) { this.count = count; this.socket = socket; this.socketList = socketList; } public void run() { BufferedReader reader = null; PrintWriter writer = null; try { reader = new BufferedReader(new InputStreamReader( socket.getInputStream())); String message = null; while (true) { message = reader.readLine(); // 接收到客户端的bye信息,客户端即将退出,并将bye写入到该客户端 if (message.equals("bye")) { writer = new PrintWriter(socket.getOutputStream()); writer.println("bye"); writer.flush(); continue; } // 向所有的客户端发送接收到信息,实现群聊 for (int i = 0; i < socketList.size(); i++) { writer = new PrintWriter(socketList.get(i) .getOutputStream()); writer.println(count + " say: " + message); writer.flush(); } } } catch (IOException e) { e.printStackTrace(); } }}public class ChatServer { /** * Description * * @param args */ public void startWork() throws IOException { ServerSocket serverSocket = new ServerSocket(2345); List socketList = new ArrayList (); Socket socket = null; int count = 0; while (true) { socket = serverSocket.accept(); count++; System.out.println(count + " clinet connected to the server!"); // 将每一个连接到该服务器的客户端,加到List中 socketList.add(socket); // 每一个连接到服务器的客户端,服务器开启一个新的线程来处理 new Chat(count, socket, socketList).start(); } } /** * Description * * @param args * @throws IOException */ public static void main(String[] args) throws IOException { ChatServer chatServer = new ChatServer(); chatServer.startWork(); }}
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;/** * 接受服务器信息 */class ReadMes extends Thread { private Socket socket; public ReadMes(Socket socket) { this.socket = socket; } public void run() { BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader( socket.getInputStream())); String message = null; while (true) { message = reader.readLine(); // 当读服务器信息线程接收到bye,该线程退出 if (message.equals("bye")) { break; } System.out.println(message); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (reader != null) { reader.close(); } } catch (IOException e) { e.printStackTrace(); } } }}/** * * 发送信息 */class SendMes extends Thread { private Socket socket; public SendMes(Socket socket) { this.socket = socket; } public void run() { BufferedReader input = null; PrintWriter writer = null; try { input = new BufferedReader(new InputStreamReader(System.in)); writer = new PrintWriter(socket.getOutputStream()); String message = null; while (true) { message = input.readLine(); // 当输入bye客户端退出 if (message.equals("bye")) { break; } // 向服务器端发送信息 writer.println(message); writer.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { if (input != null) { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } if (writer != null) { writer.close(); } } }}public class ChatClient { private String ipAdress; public ChatClient(String ipAString) { this.ipAdress = ipAdress; } public void startWork() throws UnknownHostException, IOException { Socket socket = new Socket(ipAdress, 2345); new ReadMes(socket).start(); new SendMes(socket).start(); } /** * Description * * @param args * @throws UnknownHostException * @throws IOException */ public static void main(String[] args) throws UnknownHostException, IOException { ChatClient chatClient = new ChatClient(args[0]); chatClient.startWork(); }}文章转自:http://www.open-open.com/lib/view/open1335967481983.html
转载地址:https://linqiarui.blog.csdn.net/article/details/51068261 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月29日 22时14分00秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java 解析json
2019-04-30
java http请求
2019-04-30
tensorflow 数据格式
2019-04-30
tf rnn layer
2019-04-30
常用中间件
2019-04-30
tf input layer
2019-04-30
tf model create
2019-04-30
tf dense layer两种创建方式的对比和numpy实现
2019-04-30
tf initializer
2019-04-30
tf 从RNN到BERT
2019-04-30
tf keras SimpleRNN源码解析
2019-04-30
tf keras Dense源码解析
2019-04-30
tf rnn输入输出的维度和权重的维度
2019-04-30
检验是否服从同一分布
2019-04-30
tf callbacks
2019-04-30
keras、tf、numpy实现logloss对比
2019-04-30
Ubuntu20.04安装微信
2019-04-30
Restful风格的使用
2019-04-30
Swagger基础入门整合SpringBoot
2019-04-30
MyBatisPlus简单入门(SpringBoot)
2019-04-30