温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Socket多线程服务器源代码是怎样的

发布时间:2021-11-20 18:08:29 阅读:117 作者:柒染 栏目:编程语言
亿速云爆款云服务器,独享5M带宽,BGP线路,安全稳定,0.96元/天! 查看详情>>

今天就跟大家聊聊有关java Socket多线程服务器源代码是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

java Socket多线程需要我们不断的学习,在学习的时候我们就会发现在服务器的配置上有不少的问题。下面我们就来看看服务器源代码是如何编写的,以便大家更好的使用java Socket多线程。

import java.io.BufferedReader;   import java.io.IOException;   import java.io.InputStreamReader;   import java.io.PrintWriter;   import java.net.ServerSocket;   import java.net.Socket;   import java.util.ArrayList;   import java.util.List;   import java.util.concurrent.ExecutorService;   import java.util.concurrent.Executors;   public class ChatServer {   private static final int PORT = 1234; // 端口号   private static List<Socket> list = new ArrayList<Socket>(); // 保存连接对象   private ExecutorService exec;   private ServerSocket server;   public static void main(String[] args) {   new ChatServer();   }   public ChatServer() {   try {   server = new ServerSocket(PORT);   exec = Executors.newCachedThreadPool();   System.out.println(“服务器已启动!”);   Socket client = null;   while (true) {   client = server.accept(); // 接收客户连接   list.add(client);   exec.execute(new ChatTask(client));   }   } catch (IOException e) {   e.printStackTrace();   }   }   static class ChatTask implements Runnable {   private Socket socket;   private BufferedReader br;   private PrintWriter pw;   private String msg;   public ChatTask(Socket socket) throws IOException {   this.socket = socket;   br = new BufferedReader(new InputStreamReader(socket   .getInputStream()));   msg = “【” + this.socket.getInetAddress() + “】进入聊天室!当前聊天室有【”   + list.size() + “】人”;   sendMessage();   }   public void run() {   try {   while ((msg = br.readLine()) != null) {   if (msg.trim().equals(“bye”)) {   list.remove(socket);   br.close();   pw.close();   msg = “【” + socket.getInetAddress() + “】离开聊天室!当前聊天室有【”   + list.size() + “】人”;   socket.close();   sendMessage();   break;   } else {   msg = “【” + socket.getInetAddress() + “】说:” + msg;   sendMessage();   }   }   } catch (IOException e) {   e.printStackTrace();   }   }   /**   * 群发消息给聊天室的所有人   */   private void sendMessage() throws IOException {   System.out.println(msg);   for (Socket client : list) {   pw = new PrintWriter(client.getOutputStream(), true);   pw.println(msg);   }   }   }   }   import java.io.BufferedReader;   import java.io.InputStreamReader;   import java.io.PrintWriter;   import java.net.Socket;   import java.util.concurrent.ExecutorService;   import java.util.concurrent.Executors;   public class ChatClient {   private static final int PORT = 7891;   private static ExecutorService exec = Executors.newCachedThreadPool();   public static void main(String[] args) throws Exception {   new ChatClient();   }   public ChatClient() {   try {   Socket socket = new Socket(“221.130.165.41&Prime;, PORT);   exec.execute(new Sender(socket));   System.out.println(“【” + socket.getInetAddress() + “】您好,欢迎来到简易聊天室!”);   BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));   String msg;   while ((msg = br.readLine()) != null) {   System.out.println(“收到&mdash;->”+msg);   }   } catch (Exception e) {   }   }  

看完上述内容,你们对java Socket多线程服务器源代码是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×