您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Java 中怎么實現多客戶端通信,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
來看服務端的代碼:
import java.net.*; import java.io.*; import java.util.*; public class Jserver3 { private ServerSocket server; List sManager = new ArrayList(); public Jserver3(){} void startServer() //運行服務器 { try { server=new ServerSocket(719); System.out.println("服務器套接字已創建成功!"); while(true) { Socket socket=server.accept(); System.out.println("已經與客戶端連接"); new J_Thread(socket).start(); sManager.add(socket); System.out.println("當前客戶端連結數:"+sManager.size()); } }catch(Exception e){}finally { try { server.close(); }catch(Exception e){} } } public static void main(String[] args) { Jserver3 server=new Jserver3(); server.startServer(); } class J_Thread extends Thread//與客戶端進行通信的線程類 { Socket socket; //套接字引用變量 private DataInputStream reader; //套接字輸入流 private DataOutputStream writer; //套接字輸出流 J_Thread(Socket socket) //構造函數 { this.socket=socket; } public void run() { try { reader=new DataInputStream(socket.getInputStream());//獲取套接字的輸入流 writer=new DataOutputStream(socket.getOutputStream());//獲取套接字的輸出流 String msg; while((msg=reader.readUTF())!=null)//如果收到客戶端發來的數據 { //向客戶端發送信息 writer.writeUTF("您的情書已經收到"); writer.flush(); System.out.println("來自客戶端:"+msg); } }catch(Exception e){}finally { try { sManager.remove(socket); //刪除套接字 //關閉輸入輸出流及套接字 if(reader!=null)reader.close(); if(writer!=null)writer.close(); if(socket!=null)socket.close(); reader=null; writer=null; socket=null; System.out.println("客戶端離開");//向屏幕輸出相關信息 System.out.println("當前客戶端的連接數:"+sManager.size()); }catch(Exception e){} } } } } import java.net.*; import java.io.*; import java.util.*; public class Jserver3 { private ServerSocket server; List sManager = new ArrayList(); public Jserver3(){} void startServer() //運行服務器 { try { server=new ServerSocket(719); System.out.println("服務器套接字已創建成功!"); while(true) { Socket socket=server.accept(); System.out.println("已經與客戶端連接"); new J_Thread(socket).start(); sManager.add(socket); System.out.println("當前客戶端連結數:"+sManager.size()); } }catch(Exception e){}finally { try { server.close(); }catch(Exception e){} } } public static void main(String[] args) { Jserver3 server=new Jserver3(); server.startServer(); } class J_Thread extends Thread//與客戶端進行通信的線程類 { Socket socket; //套接字引用變量 private DataInputStream reader; //套接字輸入流 private DataOutputStream writer; //套接字輸出流 J_Thread(Socket socket) //構造函數 { this.socket=socket; } public void run() { try { reader=new DataInputStream(socket.getInputStream());//獲取套接字的輸入流 writer=new DataOutputStream(socket.getOutputStream());//獲取套接字的輸出流 String msg; while((msg=reader.readUTF())!=null)//如果收到客戶端發來的數據 { //向客戶端發送信息 writer.writeUTF("您的情書已經收到"); writer.flush(); System.out.println("來自客戶端:"+msg); } }catch(Exception e){}finally { try { sManager.remove(socket); //刪除套接字 //關閉輸入輸出流及套接字 if(reader!=null)reader.close(); if(writer!=null)writer.close(); if(socket!=null)socket.close(); reader=null; writer=null; socket=null; System.out.println("客戶端離開");//向屏幕輸出相關信息 System.out.println("當前客戶端的連接數:"+sManager.size()); }catch(Exception e){} } } } }
看完上述內容,你們對Java 中怎么實現多客戶端通信有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。