Java實現(xiàn)在線聊天功能
更新時間:2022年09月15日 10:31:03 作者:Lete樂特
這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)在線聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Java實現(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í)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java線程中的Thread.yield()詳細(xì)解析
這篇文章主要介紹了Java線程中的Thread.yield()詳細(xì)解析,yield()讓當(dāng)前線程從運行狀態(tài)?轉(zhuǎn)為?就緒狀態(tài),以允許具有相同優(yōu)先級的其他線程獲得運行機會,需要的朋友可以參考下2023-11-11springcloud之Feign、ribbon如何設(shè)置超時時間和重試機制
這篇文章主要介紹了springcloud之Feign、ribbon如何設(shè)置超時時間和重試機制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08Springboot項目實現(xiàn)將類從@ComponentScan中排除
這篇文章主要介紹了Springboot項目實現(xiàn)將類從@ComponentScan中排除,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11