Java多客户端通信服务端代码介绍

Java 多客户端通信在很多人看来是一项很繁琐的工作,其实我们在编写代码的时候只要是注意留心Java 多客户端通信的源代码就能发现,我们认为枯燥的东西其实都很简单。

创新互联成立于2013年,先为锡山等服务建站,锡山等地企业,进行企业商务咨询服务。为锡山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

来看服务端的代码:

 
 
 
  1. import java.net.*; 
  2. import java.io.*; 
  3. import java.util.*; 
  4. public class Jserver3 { 
  5. private ServerSocket server; 
  6. List sManager = new ArrayList(); 
  7. public Jserver3(){} 
  8. void startServer() //运行服务器 
  9. try 
  10. server=new ServerSocket(719); 
  11. System.out.println("服务器套接字已创建成功!"); 
  12. while(true) 
  13. Socket socket=server.accept(); 
  14. System.out.println("已经与客户端连接"); 
  15. new J_Thread(socket).start(); 
  16. sManager.add(socket); 
  17. System.out.println("当前客户端连结数:"+sManager.size()); 
  18. }catch(Exception e){}finally 
  19. try 
  20. server.close(); 
  21. }catch(Exception e){} 
  22. public static void main(String[] args) { 
  23. Jserver3 server=new Jserver3(); 
  24. server.startServer(); 
  25. class J_Thread extends Thread  //与客户端进行通信的线程类 
  26. Socket socket;   //套接字引用变量 
  27. private DataInputStream reader;   //套接字输入流 
  28. private DataOutputStream writer;  //套接字输出流 
  29. J_Thread(Socket socket)   //构造函数 
  30. this.socket=socket; 
  31. public void run() 
  32. try 
  33. reader=new DataInputStream(socket.getInputStream());//获取套接字的输入流 
  34. writer=new DataOutputStream(socket.getOutputStream());//获取套接字的输出流 
  35. String msg; 
  36. while((msg=reader.readUTF())!=null)//如果收到客户端发来的数据 
  37. //向客户端发送信息 
  38. writer.writeUTF("您的情书已经收到"); 
  39. writer.flush(); 
  40. System.out.println("来自客户端:"+msg); 
  41. }catch(Exception e){}finally 
  42. try 
  43. sManager.remove(socket);  //删除套接字 
  44. //关闭输入输出流及套接字 
  45. if(reader!=null)reader.close(); 
  46. if(writer!=null)writer.close(); 
  47. if(socket!=null)socket.close(); 
  48. reader=null; 
  49. writer=null; 
  50. socket=null; 
  51. System.out.println("客户端离开");//向屏幕输出相关信息 
  52. System.out.println("当前客户端的连接数:"+sManager.size()); 
  53. }catch(Exception e){} 
  54. import java.net.*;
  55. import java.io.*;
  56. import java.util.*;
  57. public class Jserver3 {
  58. private ServerSocket server;
  59. List sManager = new ArrayList();
  60. public Jserver3(){}
  61. void startServer() //运行服务器
  62. {
  63. try
  64. {
  65. server=new ServerSocket(719);
  66. System.out.println("服务器套接字已创建成功!");
  67. while(true)
  68. {
  69. Socket socket=server.accept();
  70. System.out.println("已经与客户端连接");
  71. new J_Thread(socket).start();
  72. sManager.add(socket);
  73. System.out.println("当前客户端连结数:"+sManager.size());
  74. }
  75. }catch(Exception e){}finally
  76. {
  77. try
  78. {
  79. server.close();
  80. }catch(Exception e){}
  81. }
  82. }
  83. public static void main(String[] args) {
  84. Jserver3 server=new Jserver3();
  85. server.startServer();
  86. }
  87. class J_Thread extends Thread  //与客户端进行通信的线程类
  88. {
  89. Socket socket;   //套接字引用变量
  90. private DataInputStream reader;   //套接字输入流
  91. private DataOutputStream writer;  //套接字输出流
  92. J_Thread(Socket socket)   //构造函数
  93. {
  94. this.socket=socket;
  95. }
  96. public void run()
  97. {
  98. try
  99. {
  100. reader=new DataInputStream(socket.getInputStream());//获取套接字的输入流
  101. writer=new DataOutputStream(socket.getOutputStream());//获取套接字的输出流
  102. String msg;
  103. while((msg=reader.readUTF())!=null)//如果收到客户端发来的数据
  104. {
  105. //向客户端发送信息
  106. writer.writeUTF("您的情书已经收到");
  107. writer.flush();
  108. System.out.println("来自客户端:"+msg);
  109. }
  110. }catch(Exception e){}finally
  111. {
  112. try
  113. {
  114. sManager.remove(socket);  //删除套接字
  115. //关闭输入输出流及套接字
  116. if(reader!=null)reader.close();
  117. if(writer!=null)writer.close();
  118. if(socket!=null)socket.close();
  119. reader=null;
  120. writer=null;
  121. socket=null;
  122. System.out.println("客户端离开");//向屏幕输出相关信息
  123. System.out.println("当前客户端的连接数:"+sManager.size());
  124. }catch(Exception e){}
  125. }
  126. }
  127. }
  128. }

嘎嘎 在这段代码里,服务端MM为每一个连接的客户端GG分配一个单独的线程,而每一个线程里都持有对应的客户端GG的Java 多客户端通信对象。SO,通过这些多线程,服务端MM就练就了一心N用的功力,可以同时接受N个客户端GG发来的情书了(,真的太贱了。。。。)

客户端的代码和上面的客户端代码一模一样的,这里就不多说啦!

本文题目:Java多客户端通信服务端代码介绍
标题网址:http://www.shufengxianlan.com/qtweb/news40/512840.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联