您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)java怎么實(shí)現(xiàn)多人聊天對話室的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
使用ServerSocket和Socket實(shí)現(xiàn)服務(wù)器端和客戶端的Socket通信。
了解完socket通信步驟后可以發(fā)現(xiàn)本實(shí)驗(yàn)需要寫兩個類:Server和Client,并且要先運(yùn)行Server再運(yùn)行Client。
先構(gòu)造服務(wù)器端
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; /** * @author: Ren * @date: 2020-08-03 15:23 * @description: */ public class TcpserverC2 { public static void main(String[] args) throws IOException { // 定義多線程,讓多個用戶都可以參與到聊天室 ExecutorService pool = new ScheduledThreadPoolExecutor(10); // 綁定端口 ServerSocket serverSocket = new ServerSocket(8888); // 利用循環(huán)一直來讀取新的socket while (true) { // 開始serversocket偵聽請求,這方法會阻塞等待tcp請求的到來,一旦到來,就返回 Socket accept = serverSocket.accept(); pool.execute(new Runnable() { Socket socket = accept; // 定義字節(jié)數(shù)組來讀取輸入流 byte[] buf = new byte[1024]; @Override public void run() { // 定義輸入輸出流 InputStream in = null; OutputStream out = null; try { in = socket.getInputStream(); out = socket.getOutputStream(); while (true) { int len = in.read(buf); System.out.println("服務(wù)器收到:" + new String(buf, 0, len, ("utf-8"))); // 聊天室服務(wù)端一般不會參與對話,所以一般不加這個功能 // String xitongshuohua = scanner.nextLine(); // out.write("謝謝".getBytes(Charset.forName("utf-8"))); out.write("謝謝".getBytes(("utf-8"))); } } catch (IOException e) { e.printStackTrace(); } } }); } } }
再構(gòu)建客戶端
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner; /** * @author: Ren * @date: 2020-08-03 15:23 * @description: */ public class TcpClientC2 { public static void main(String[] args) throws IOException { // 目標(biāo)地址,目標(biāo)端口 Socket socket = new Socket("127.0.0.1",8888); InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); Scanner scanner = new Scanner(System.in); byte[] buf = new byte[1024]; while (true) { String word = scanner.nextLine(); out.write(word.getBytes(("utf-8"))); int lrn = in.read(buf); System.out.println("服務(wù)端回復(fù):"+new String(buf,0,lrn,("utf-8"))); } } }
服務(wù)器端構(gòu)建在一個主機(jī)上,然后在多臺電腦創(chuàng)建客戶端,并訪問服務(wù)器端所在的主機(jī)就可以構(gòu)成聊天室的效果,當(dāng)然前提是在同一個局域網(wǎng)下。
感謝各位的閱讀!關(guān)于“java怎么實(shí)現(xiàn)多人聊天對話室”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。