溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java 中怎么實(shí)現(xiàn)多客戶端通信

發(fā)布時(shí)間:2021-07-20 14:01:17 來源:億速云 閱讀:166 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關(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è)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(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)容。

AI