今天就跟大家聊聊有关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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。