Java Socket通信之聊天室功能
更新時(shí)間:2017年12月15日 13:41:54 作者:LY_624
這篇文章主要為大家詳細(xì)介紹了Java Socket通信之聊天室功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了Java Socket聊天室功能的具體代碼,供大家參考,具體內(nèi)容如下
Client.java
import java.io.*; import java.net.*; import java.util.*; public class Client { public int port = 8083; Socket socket = null; public static void main(String[] args) { new Client(); //開始執(zhí)行 } public Client() { try { socket = new Socket("127.0.0.1", port); new Cthread().start(); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String msg1; while ((msg1 = br.readLine()) != null) { System.out.println(msg1); } } catch (Exception e) { } } class Cthread extends Thread { public void run() { try { BufferedReader re = new BufferedReader(new InputStreamReader(System.in)); PrintWriter pw = new PrintWriter(socket.getOutputStream(), true); String msg2; while (true) { msg2 = re.readLine(); pw.println(msg2); } } catch (Exception e) { e.printStackTrace(); } } } }
Server.java
import java.net.*; import java.io.*; import java.util.*; public class Server { int port; List<Socket> clients; ServerSocket server; public Server() { try { port = 8083; clients = new ArrayList<Socket>(); server = new ServerSocket(port); System.out.println("服務(wù)器已啟動(dòng)"); int co=1; while (true) { Socket socket = server.accept(); clients.add(socket); Mythread mythread = new Mythread(socket,co); co++; mythread.start(); } } catch (Exception ex) { System.out.println("vv"); } } public static void main(String[] args) { new Server(); } class Mythread extends Thread { Socket ssocket; private int count; private BufferedReader br; private PrintWriter pw; public String msg; public Mythread(Socket s,int c) { ssocket = s; count=c; } public void run() { try { br = new BufferedReader(new InputStreamReader(ssocket.getInputStream())); msg = "歡迎【" +"Client "+count + "】進(jìn)入聊天室!當(dāng)前聊天室有【" + clients.size() + "】人"; sendMsg(); while ((msg = br.readLine()) != null) { msg = "【" +"Client "+count + "】說:" + msg; sendMsg(); } } catch (Exception ex) { } } public void sendMsg() { try { System.out.println(msg); for (int i = clients.size() - 1; i >= 0; i--) { pw = new PrintWriter(clients.get(i).getOutputStream(), true); pw.println(msg); pw.flush(); } } catch (Exception ex) { } } } }
運(yùn)行結(jié)果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Java NIO實(shí)戰(zhàn)之聊天室功能詳解
- Java NIO Selector用法詳解【含多人聊天室實(shí)例】
- java編程實(shí)現(xiàn)多人聊天室功能
- java聊天室的實(shí)現(xiàn)代碼
- Java GUI編程實(shí)現(xiàn)在線聊天室
- java實(shí)現(xiàn)簡(jiǎn)單聊天室單人版
- Java編程實(shí)現(xiàn)基于TCP協(xié)議的Socket聊天室示例
- Java continue break制作簡(jiǎn)單聊天室程序
- java利用Socket實(shí)現(xiàn)聊天室功能實(shí)例
- java基于netty NIO的簡(jiǎn)單聊天室的實(shí)現(xiàn)
相關(guān)文章
關(guān)于Idea使用git時(shí)commit特別慢的問題及解決方法
這篇文章主要介紹了關(guān)于Idea使用git時(shí)commit特別慢的問題及解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Mybatis使用IN語(yǔ)句查詢的實(shí)現(xiàn)
這篇文章主要介紹了Mybatis使用IN語(yǔ)句查詢的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Java?map為什么不能遍歷的同時(shí)進(jìn)行增刪操作
這篇文章主要介紹了Java?map為什么不能遍歷的同時(shí)進(jìn)行增刪操作,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07SpringBoot2.1 RESTful API項(xiàng)目腳手架(種子)項(xiàng)目
這篇文章主要介紹了SpringBoot2.1 RESTful API項(xiàng)目腳手架(種子)項(xiàng)目,用于搭建RESTful API工程的腳手架,只需三分鐘你就可以開始編寫業(yè)務(wù)代碼,不再煩惱于構(gòu)建項(xiàng)目與風(fēng)格統(tǒng)一,感興趣的小伙伴們可以參考一下2018-12-12