Java實(shí)現(xiàn)在線聊天功能
更新時間:2022年09月15日 10:31:03 作者:Lete樂特
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)在線聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了Java實(shí)現(xiàn)在線聊天功能的具體代碼,供大家參考,具體內(nèi)容如下
效果
關(guān)鍵代碼
創(chuàng)建Client.java
import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; /** ?* @author Lete ?* @樂特的程序永無BUG ?* @createDate 2020- 07-04 22:13 ?* ?* 1. SendThread 發(fā)送消息線程 ?* 2. RecieveThread 接受消息線程 ?*/ public class Client { ? ? public static void main(String[] args) { ? ? ? ? try { ? ? ? ? ? ? // 創(chuàng)建8888端口 ? ? ? ? ? ? Socket s = new Socket("127.0.0.1", 8888); ? ? ? ? ? ? // 啟動發(fā)送消息線程 ? ? ? ? ? ? new SendThread(s).start(); ? ? ? ? ? ? // 啟動接受消息線程 ? ? ? ? ? ? new RecieveThread(s).start(); ? ? ? ? } catch (UnknownHostException e) { ? ? ? ? ? ? // TODO Auto-generated catch block ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } catch (IOException e) { ? ? ? ? ? ? // TODO Auto-generated catch block ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } }
創(chuàng)建Server.java
import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; /** ?* @author Lete ?* @樂特的程序永無BUG ?* @createDate 2020- 07-04 22:13 ?* ?* 1. SendThread 發(fā)送消息線程 ?* 2. RecieveThread 接受消息線程 ?*/ public class Server { ? ? public static void main(String[] args) { ? ? ? ? try { ? ? ? ? ? ? // 監(jiān)聽8888端口 ? ? ? ? ? ? ServerSocket ss = new ServerSocket(8888); ? ? ? ? ? ? System.out.println("監(jiān)聽在端口號:8888"); ? ? ? ? ? ? Socket s = ss.accept(); ? ? ? ? ? ? //啟動發(fā)送消息線程 ? ? ? ? ? ? new SendThread(s).start(); ? ? ? ? ? ? //啟動接受消息線程 ? ? ? ? ? ? new RecieveThread(s).start(); ? ? ? ? } catch (IOException e) { ? ? ? ? ? ? // TODO Auto-generated catch block ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } }
創(chuàng)建RecieveThread.java
import java.io.*; import java.net.Socket; /** ?* @author Lete ?* @樂特的程序永無BUG ?* @createDate 2020- 07-04 22:13 ?* ?* 1. SendThread 發(fā)送消息線程 ?* 2. RecieveThread 接受消息線程 ?*/ public class RecieveThread extends Thread { ? ? private Socket s; ? ? public RecieveThread(Socket s) { ? ? ? ? this.s = s; ? ? } ? ? public void run() { ? ? ? ? try { ? ? ? ? ? ? // 接收對方輸入的內(nèi)容 ? ? ? ? ? ? InputStream is = s.getInputStream(); ? ? ? ? ? ? DataInputStream dis = new DataInputStream(is); ? ? ? ? ? ? while (true) { ? ? ? ? ? ? ? ? String msg = dis.readUTF(); ? ? ? ? ? ? ? ? System.out.println(msg); ? ? ? ? ? ? } ? ? ? ? } catch (IOException e) { ? ? ? ? ? ? // TODO Auto-generated catch block ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } }
創(chuàng)建SendThread.java
import java.io.*; import java.net.Socket; import java.util.Scanner; /** ?* @author Lete ?* @樂特的程序永無BUG ?* @createDate 2020- 07-04 22:13 ?* ?* 1. SendThread 發(fā)送消息線程 ?* 2. RecieveThread 接受消息線程 ?*/ public class SendThread extends Thread { ? ? private Socket s; ? ? public SendThread(Socket s) { ? ? ? ? this.s = s; ? ? } ? ? public void run() { ? ? ? ? try { ? ? ? ? ? ? // 獲取輸入的內(nèi)容 ? ? ? ? ? ? OutputStream os = s.getOutputStream(); ? ? ? ? ? ? DataOutputStream dos = new DataOutputStream(os); ? ? ? ? ? ? while (true) { ? ? ? ? ? ? ? ? Scanner sc = new Scanner(System.in); ? ? ? ? ? ? ? ? String str = sc.next(); ? ? ? ? ? ? ? ? dos.writeUTF(str); ? ? ? ? ? ? } ? ? ? ? } catch (IOException e) { ? ? ? ? ? ? // TODO Auto-generated catch block ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- java實(shí)現(xiàn)在線聊天系統(tǒng)
- Java實(shí)現(xiàn)在線聊天室(層層遞進(jìn))
- Java網(wǎng)絡(luò)編程UDP實(shí)現(xiàn)多線程在線聊天
- Java網(wǎng)絡(luò)編程實(shí)例——簡單模擬在線聊天
- Java使用TCP實(shí)現(xiàn)在線聊天的示例代碼
- Java GUI編程實(shí)現(xiàn)在線聊天室
- Java中使用websocket實(shí)現(xiàn)在線聊天功能
- java Socket實(shí)現(xiàn)網(wǎng)頁版在線聊天
- 基于Java Socket實(shí)現(xiàn)一個簡易在線聊天功能(一)
- java基于UDP實(shí)現(xiàn)在線聊天功能
相關(guān)文章
Java線程中的Thread.yield()詳細(xì)解析
這篇文章主要介紹了Java線程中的Thread.yield()詳細(xì)解析,yield()讓當(dāng)前線程從運(yùn)行狀態(tài)?轉(zhuǎn)為?就緒狀態(tài),以允許具有相同優(yōu)先級的其他線程獲得運(yùn)行機(jī)會,需要的朋友可以參考下2023-11-11springcloud之Feign、ribbon如何設(shè)置超時時間和重試機(jī)制
這篇文章主要介紹了springcloud之Feign、ribbon如何設(shè)置超時時間和重試機(jī)制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08Springboot項(xiàng)目實(shí)現(xiàn)將類從@ComponentScan中排除
這篇文章主要介紹了Springboot項(xiàng)目實(shí)現(xiàn)將類從@ComponentScan中排除,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11