您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)Java 中怎么實(shí)現(xiàn)多客戶端通信,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
來看服務(wù)端的代碼:
import java.net.*; import java.io.*; import java.util.*; public class Jserver3 { private ServerSocket server; List sManager = new ArrayList(); public Jserver3(){} void startServer() //運(yùn)行服務(wù)器 { try { server=new ServerSocket(719); System.out.println("服務(wù)器套接字已創(chuàng)建成功!"); while(true) { Socket socket=server.accept(); System.out.println("已經(jīng)與客戶端連接"); new J_Thread(socket).start(); sManager.add(socket); System.out.println("當(dāng)前客戶端連結(jié)數(shù):"+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//與客戶端進(jìn)行通信的線程類 { Socket socket; //套接字引用變量 private DataInputStream reader; //套接字輸入流 private DataOutputStream writer; //套接字輸出流 J_Thread(Socket socket) //構(gòu)造函數(shù) { this.socket=socket; } public void run() { try { reader=new DataInputStream(socket.getInputStream());//獲取套接字的輸入流 writer=new DataOutputStream(socket.getOutputStream());//獲取套接字的輸出流 String msg; while((msg=reader.readUTF())!=null)//如果收到客戶端發(fā)來的數(shù)據(jù) { //向客戶端發(fā)送信息 writer.writeUTF("您的情書已經(jīng)收到"); writer.flush(); System.out.println("來自客戶端:"+msg); } }catch(Exception e){}finally { try { sManager.remove(socket); //刪除套接字 //關(guān)閉輸入輸出流及套接字 if(reader!=null)reader.close(); if(writer!=null)writer.close(); if(socket!=null)socket.close(); reader=null; writer=null; socket=null; System.out.println("客戶端離開");//向屏幕輸出相關(guān)信息 System.out.println("當(dāng)前客戶端的連接數(shù):"+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() //運(yùn)行服務(wù)器 { try { server=new ServerSocket(719); System.out.println("服務(wù)器套接字已創(chuàng)建成功!"); while(true) { Socket socket=server.accept(); System.out.println("已經(jīng)與客戶端連接"); new J_Thread(socket).start(); sManager.add(socket); System.out.println("當(dāng)前客戶端連結(jié)數(shù):"+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//與客戶端進(jìn)行通信的線程類 { Socket socket; //套接字引用變量 private DataInputStream reader; //套接字輸入流 private DataOutputStream writer; //套接字輸出流 J_Thread(Socket socket) //構(gòu)造函數(shù) { this.socket=socket; } public void run() { try { reader=new DataInputStream(socket.getInputStream());//獲取套接字的輸入流 writer=new DataOutputStream(socket.getOutputStream());//獲取套接字的輸出流 String msg; while((msg=reader.readUTF())!=null)//如果收到客戶端發(fā)來的數(shù)據(jù) { //向客戶端發(fā)送信息 writer.writeUTF("您的情書已經(jīng)收到"); writer.flush(); System.out.println("來自客戶端:"+msg); } }catch(Exception e){}finally { try { sManager.remove(socket); //刪除套接字 //關(guān)閉輸入輸出流及套接字 if(reader!=null)reader.close(); if(writer!=null)writer.close(); if(socket!=null)socket.close(); reader=null; writer=null; socket=null; System.out.println("客戶端離開");//向屏幕輸出相關(guān)信息 System.out.println("當(dāng)前客戶端的連接數(shù):"+sManager.size()); }catch(Exception e){} } } } }
看完上述內(nèi)容,你們對Java 中怎么實(shí)現(xiàn)多客戶端通信有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(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)容。