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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用网络Socket和多线程实现一个双向聊天

發布時間:2023/12/18 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用网络Socket和多线程实现一个双向聊天 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接收鍵盤輸入然后向對方發送消息的線程

1 package cn.com.chat; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.IOException; 6 import java.io.InputStreamReader; 7 import java.io.OutputStreamWriter; 8 import java.net.Socket; 9 10 /** 11 * 12 * @author Xiaofei 13 * 14 */ 15 public class SendMsgThread extends Thread{ 16 /** 17 * 用來接收鍵盤輸入然后向對方發送消息的線程 18 */ 19 Socket ss = null; 20 BufferedWriter bw = null; 21 BufferedReader br = null; 22 public SendMsgThread(Socket ss){ 23 this.ss = ss; 24 try { 25 bw = new BufferedWriter(new OutputStreamWriter(ss.getOutputStream())); 26 br = new BufferedReader(new InputStreamReader(System.in)); 27 } catch (IOException e) { 28 // TODO 自動生成的 catch 塊 29 e.printStackTrace(); 30 } 31 } 32 public void run(){ 33 try { 34 while(true){ 35 String str; 36 str = br.readLine(); 37 if(str.equals("exit")){ 38 System.exit(0); 39 }else{ 40 bw.write(str+"\n"); 41 bw.flush(); 42 } 43 } 44 } catch (IOException e) { 45 // TODO 自動生成的 catch 塊 46 e.printStackTrace(); 47 }finally{ 48 try { 49 bw.close(); 50 br.close(); 51 } catch (IOException e) { 52 // TODO 自動生成的 catch 塊 53 e.printStackTrace(); 54 } 55 } 56 } 57 }

服務端:Server

package cn.com.chat;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket;public class Server {public static void main(String[] args) {ServerSocket server = null;Socket socket = null;BufferedReader br= null;try {server = new ServerSocket(88);socket = server.accept();new SendMsgThread(socket).start();br = new BufferedReader(new InputStreamReader(socket.getInputStream()));while(true){String str = br.readLine();System.out.println("客戶端:\n"+str);}} catch (IOException e) {// TODO 自動生成的 catch 塊 e.printStackTrace();}finally{try {br.close();server.close();} catch (IOException e) {// TODO 自動生成的 catch 塊 e.printStackTrace();}}}}

客戶端:Client

1 package cn.com.chat; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.net.Socket; 7 8 public class Client { 9 public static void main(String[] args) { 10 Socket socket = null; 11 BufferedReader br = null; 12 try { 13 socket = new Socket("192.168.16.111", 88); 14 System.out.println("請輸入您的消息:"); 15 new SendMsgThread(socket).start(); 16 br = new BufferedReader(new InputStreamReader( 17 socket.getInputStream())); 18 while (true) { 19 String str = br.readLine(); 20 System.out.println("客戶端:\n" + str); 21 } 22 } catch (IOException e) { 23 e.printStackTrace(); 24 } finally { 25 try { 26 br.close(); 27 socket.close(); 28 } catch (IOException e) { 29 // TODO 自動生成的 catch 塊 30 e.printStackTrace(); 31 } 32 } 33 } 34 35 }

特別提醒一點:注意啟動的順序,現實啟動服務端,再啟動客戶端。現有接收的服務器,客戶端才能夠獲得服務端的端口和IP。

?

轉載于:https://www.cnblogs.com/rememberme/p/ChatLine.html

總結

以上是生活随笔為你收集整理的利用网络Socket和多线程实现一个双向聊天的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。