日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

一对多聊天系统

發(fā)布時間:2023/12/20 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一对多聊天系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一對多聊天系統(tǒng)

在上一篇博客中,我們寫了一個基于TCP的客戶端和服務(wù)器的一對一雙向聊天系統(tǒng),但只能開一個客戶端與服務(wù)器通信,我們在之前的代碼做一些改動,就實現(xiàn)了多個客戶端與服務(wù)器通信的系統(tǒng),且服務(wù)器能向所有客戶端發(fā)送廣播!

代碼示例

創(chuàng)建服務(wù)器

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; 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 javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField;public class Server extends JFrame implements ActionListener {PrintWriter pw;BufferedReader br;JTextArea jta;JTextField jtf;JButton jb;JPanel jp;JScrollPane jsp;ArrayList<Socket> sockets;ServerSocket ss;public static void main(String[] args) {new Server();}public Server() {jta = new JTextArea();jsp = new JScrollPane(jta);jtf = new JTextField(15);jb = new JButton("發(fā)送");jb.addActionListener(this);jp = new JPanel();jp.add(jtf);jp.add(jb);this.add(jsp, BorderLayout.CENTER);this.add(jp, BorderLayout.SOUTH);this.setSize(300, 200);this.setTitle("服務(wù)器");this.setVisible(true);new Thread(new Runnable() {@Overridepublic void run() {try {ss = new ServerSocket(10000);//存放客戶端連接來的Socketsockets = new ArrayList<>();while (true) {Socket socket = ss.accept();sockets.add(socket);jta.append("客戶端已成功連接服務(wù)器\n");Thread t = new Thread(new GetClientToServerMessage(Server.this, socket));t.start();}} catch (IOException e) {e.printStackTrace();}}}).start();}@Overridepublic void actionPerformed(ActionEvent e) {// 發(fā)送try {String str = jtf.getText();for (Socket socket : sockets) {pw = new PrintWriter(socket.getOutputStream(), true);pw.println(str);pw.flush();}jta.append("服務(wù)器廣播:" + str + "\n");jtf.setText("");} catch (IOException e1) {e1.printStackTrace();}}public void read(Socket socket) {try {while (true) {br = new BufferedReader(new InputStreamReader(socket.getInputStream()));jta.append(br.readLine() + "\n");}} catch (IOException e) {e.printStackTrace();}} }

創(chuàng)建服務(wù)器接收客戶端消息的線程類

import java.net.Socket;public class GetClientToServerMessage implements Runnable {private Server server;private Socket socket;public GetClientToServerMessage(Server server,Socket socket) {this.server = server;this.socket = socket;}@Overridepublic void run() { server.read(socket);} }

創(chuàng)建Client類

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException;import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField;public class Client extends JFrame implements ActionListener {Socket s;PrintWriter pw;BufferedReader br;JTextArea jta;JTextField jtf;JButton jb;JPanel jp;JScrollPane jsp;JOptionPane jop;String username;public static void main(String[] args) {new Client();}public Client() {jta = new JTextArea();jsp = new JScrollPane(jta);jtf = new JTextField(15);jb = new JButton("發(fā)送");jb.addActionListener(this);jp = new JPanel();jp.add(jtf);jp.add(jb);this.add(jsp, BorderLayout.CENTER);this.add(jp, BorderLayout.SOUTH);this.setSize(300, 200);username = JOptionPane.showInputDialog("請輸入用戶名"); this.setTitle("客戶端"+username);this.setVisible(true);try {s = new Socket("127.0.0.1", 10000);jta.append("您已成功連接服務(wù)器\n");Thread t = new Thread(new GetServerToClientMessage(Client.this));t.start();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}@Overridepublic void actionPerformed(ActionEvent e) {try {pw = new PrintWriter(s.getOutputStream(), true);String str = jtf.getText();jta.append(username+"說:" + str + "\n");pw.println(username+"說:"+str);pw.flush();jtf.setText("");} catch (IOException e1) {e1.printStackTrace();}}public void read(){try {while (true) {br = new BufferedReader(new InputStreamReader(s.getInputStream()));jta.append("服務(wù)器回復(fù)說:" + br.readLine()+ "\n");}} catch (IOException e) {e.printStackTrace();}} }

創(chuàng)建接收服務(wù)器消息的線程類

public class GetServerToClientMessage implements Runnable {private Client client;public GetServerToClientMessage(Client client) {this.client = client;}@Overridepublic void run() {client.read();} }

運行結(jié)果



總結(jié)

以上是生活随笔為你收集整理的一对多聊天系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩在线国产 | 蜜桃视频污| 国产在线a视频 | 国产一区二区三区黄片 | 一级片欧美 | 医生强烈淫药h调教小说视频 | 日韩一区二区三区免费在线观看 | 亚洲高清视频一区 | 国产成人精品电影 | 一级片免费观看视频 | 精品妇女一区二区三区 | 欧洲亚洲自拍 | 97人人模人人爽人人少妇 | 欧美精品系列 | 亚洲av无码专区在线播放中文 | 内射干少妇亚洲69xxx | 精品国产大片大片大片 | caoporn免费在线 | 少女忠诚电影高清免费 | 亚洲老女人视频 | 国产精品麻豆一区二区 | 午夜资源 | www.国产91 | av在线电影观看 | 国产综合网站 | 一本色道久久综合亚洲精品酒店 | 求免费黄色网址 | 中文字幕在线成人 | 免费大片黄在线观看视频网站 | 玩日本老头很兴奋xxxx | 奇米影视盒 | 超碰超碰97| 九九热免费在线 | 国产亚洲精品美女久久久 | 中文字幕人妻熟女在线 | 亚洲黄色一级 | 日韩avxxx | 久久国产精品免费看 | 强开小嫩苞一区二区三区网站 | 好男人.www | 国产精品久久久久久久久久久久久久久久久 | 国产美女无遮挡免费视频 | 久久久久久久久久一区 | 国产精品自拍小视频 | 国产高清在线不卡 | 亚洲免费在线播放 | 黄色日b片 | 黄色com| 91伦理| 国产日韩一区二区三免费高清 | 老牛影视av一区二区在线观看 | 久久精品一二 | 午夜av网站| 欧美黑人又粗又大又爽免费 | 五月激情视频 | 国产精品三 | 亚洲欧美bt | 好吊一区| www.av在线播放 | 国产精品一二三四五区 | 精品少妇一区二区三区免费观 | 亚洲欧美中文日韩在线v日本 | 宅男视频在线免费观看 | 4438x五月天 日吊视频 | 性欧美又大又长又硬 | 中文字幕第28页 | 美女黄色一级视频 | 青青青手机视频 | www污污| 国产精品国产三级国产专播精品人 | 高清视频在线播放 | 4438x在线观看 | 伊人久久精品一区二区三区 | 日日夜夜爱爱 | 日韩亚洲欧美一区二区 | 国产素人在线观看 | 麻豆亚洲av成人无码久久精品 | 在线播放精品 | 日韩超碰在线 | 成人在线免费电影 | 久久久精品99 | 国产一级影院 | 久久久久久久久久久综合 | 91嫩草精品 | 精品动漫一区二区三区在线观看 | 日韩欧美国产成人精品免费 | 日本免费不卡一区二区 | 1000部国产精品成人观看 | 国内精品久久久久久久久久久 | 午夜视频免费观看 | 黄色正能量网站 | 色哟哟免费观看 | 精品偷拍网 | 91无套直看片红桃 | 精品久久人人妻人人做人人 | av55 | 免费高清av在线看 | 波多野结衣1区2区3区 | 少妇闺蜜换浪荡h肉辣文 | 福利视频导航网 |