我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

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

  1. import java.io.BufferedReader;   

  2. import java.io.IOException;   

  3. import java.io.InputStreamReader;   

  4. import java.io.PrintWriter;   

  5. import java.net.ServerSocket;   

  6. import java.net.Socket;   

  7. import java.util.ArrayList;   

  8. import java.util.List;   

  9. import java.util.concurrent.ExecutorService;   

  10. import java.util.concurrent.Executors;   

  11. public class ChatServer {   

  12. private static final int PORT = 1234; // 端口号   

  13. private static List<Socket> list = new ArrayList<Socket>(); 
    // 保存连接对象   

  14. private ExecutorService exec;   

  15. private ServerSocket server;   

  16. public static void main(String[] args) {   

  17. new ChatServer();   

  18. }   

  19. public ChatServer() {   

  20. try {   

  21. server = new ServerSocket(PORT);   

  22. exec = Executors.newCachedThreadPool();   

  23. System.out.println(“服务器已启动!”);   

  24. Socket client = null;   

  25. while (true) {   

  26. client = server.accept(); // 接收客户连接   

  27. list.add(client);   

  28. exec.execute(new ChatTask(client));   

  29. }   

  30. } catch (IOException e) {   

  31. e.printStackTrace();   

  32. }   

  33. }   

  34. static class ChatTask implements Runnable {   

  35. private Socket socket;   

  36. private BufferedReader br;   

  37. private PrintWriter pw;   

  38. private String msg;   

  39. public ChatTask(Socket socket) throws IOException {   

  40. this.socket = socket;   

  41. br = new BufferedReader(new InputStreamReader(socket   

  42. .getInputStream()));   

  43. msg = “【” + this.socket.getInetAddress() + “】
    进入聊天室!当前聊天室有【”   

  44. + list.size() + “】人”;   

  45. sendMessage();   

  46. }   

  47. public void run() {   

  48. try {   

  49. while ((msg = br.readLine()) != null) {   

  50. if (msg.trim().equals(“bye”)) {   

  51. list.remove(socket);   

  52. br.close();   

  53. pw.close();   

  54. msg = “【” + socket.getInetAddress() + “】
    离开聊天室!当前聊天室有【”   

  55. + list.size() + “】人”;   

  56. socket.close();   

  57. sendMessage();   

  58. break;   

  59. } else {   

  60. msg = “【” + socket.getInetAddress() + “】说:” + msg;   

  61. sendMessage();   

  62. }   

  63. }   

  64. } catch (IOException e) {   

  65. e.printStackTrace();   

  66. }   

  67. }   

  68.    

  69. private void sendMessage() throws IOException {   

  70. System.out.println(msg);   

  71. for (Socket client : list) {   

  72. pw = new PrintWriter(client.getOutputStream(), true);   

  73. pw.println(msg);   

  74. }   

  75. }   

  76. }   

  77. }   

  78. import java.io.BufferedReader;   

  79. import java.io.InputStreamReader;   

  80. import java.io.PrintWriter;   

  81. import java.net.Socket;   

  82. import java.util.concurrent.ExecutorService;   

  83. import java.util.concurrent.Executors;   

  84. public class ChatClient {   

  85. private static final int PORT = 7891;   

  86. private static ExecutorService exec = 
    Executors.newCachedThreadPool();   

  87. public static void main(String[] args) throws Exception {   

  88. new ChatClient();   

  89. }   

  90. public ChatClient() {   

  91. try {   

  92. Socket socket = new Socket(“221.130.165.41&Prime;, PORT);   

  93. exec.execute(new Sender(socket));   

  94. System.out.println(“【” + socket.getInetAddress() + “】
    您好,欢迎来到简易聊天室!”);   

  95. BufferedReader br = new BufferedReader(new 
    InputStreamReader(socket.getInputStream()));   

  96. String msg;   

  97. while ((msg = br.readLine()) != null) {   

  98. System.out.println(“收到&mdash;->”+msg);   

  99. }   

  100. } catch (Exception e) {   

  101. }   

  102. }  

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

今天就跟大家聊聊有关java Socket多线程服务器源代码是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。java Socket多线程需要我们不断的学习,在学习的时候我们就会
2023-06-17

java doc线程关键代码的编写是怎样的

这期内容当中小编将会给大家带来有关java doc线程关键代码的编写是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。java doc线程在使用的时候需要我们不断学习相关问题,下面我们就详细的看看如何
2023-06-17

Java中的多线程回显服务器怎么利用Socket实现

Java中的多线程回显服务器怎么利用Socket实现?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体如下:需要两个类,一个是EchoServer,代表服务器。另外一个是Ech
2023-05-31

怎样进行Java线程控制权源代码的深入探讨

怎样进行Java线程控制权源代码的深入探讨,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java线程控制权的问题十分重要,我们在不断的学习中需要不断的注意相关的问题。下面我们就
2023-06-17

怎样进行Java Socket通信客户端和服务器的代码介绍

今天就跟大家聊聊有关怎样进行Java Socket通信客户端和服务器的代码介绍,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java Socket通信在我们平时的使用中有很多需要注意
2023-06-17

怎么在Java中利用socket多线程访问服务器文件

今天就跟大家聊聊有关怎么在Java中利用socket多线程访问服务器文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。ServerMain.javapackage com.ysk.w
2023-05-30

centos5.3 搭建DNS多域名解析服务器的教程是怎样的

centos5.3 搭建DNS多域名解析服务器的教程是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、域名与域名解析 网络中为了区别各个主机,必须为每台主机分配一个惟一
2023-06-10

编程热搜

目录