成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java 多客戶端通信服務端代碼介紹

開發 后端
Java 多客戶端通信需要我們不斷的學習,在學習的過程中不斷的問題會讓我們十分頭痛,下面我們就看看相關問題的解決方案。

Java 多客戶端通信在很多人看來是一項很繁瑣的工作,其實我們在編寫代碼的時候只要是注意留心Java 多客戶端通信的源代碼就能發現,我們認為枯燥的東西其實都很簡單。

來看服務端的代碼:

  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. {   
  10. try   
  11. {   
  12. server=new ServerSocket(719);   
  13. System.out.println("服務器套接字已創建成功!");   
  14. while(true)   
  15. {   
  16. Socket socket=server.accept();   
  17. System.out.println("已經與客戶端連接");   
  18. new J_Thread(socket).start();   
  19. sManager.add(socket);   
  20. System.out.println("當前客戶端連結數:"+sManager.size());   
  21. }   
  22. }catch(Exception e){}finally   
  23. {   
  24. try   
  25. {   
  26. server.close();   
  27. }catch(Exception e){}   
  28. }   
  29. }   
  30. public static void main(String[] args) {   
  31. Jserver3 server=new Jserver3();   
  32. server.startServer();   
  33. }   
  34. class J_Thread extends Thread  //與客戶端進行通信的線程類   
  35. {   
  36. Socket socket;   //套接字引用變量   
  37. private DataInputStream reader;   //套接字輸入流   
  38. private DataOutputStream writer;  //套接字輸出流   
  39. J_Thread(Socket socket)   //構造函數   
  40. {   
  41. this.socket=socket;   
  42. }   
  43. public void run()   
  44. {   
  45. try   
  46. {   
  47. reader=new DataInputStream(socket.getInputStream());//獲取套接字的輸入流   
  48. writer=new DataOutputStream(socket.getOutputStream());//獲取套接字的輸出流   
  49. String msg;   
  50. while((msg=reader.readUTF())!=null)//如果收到客戶端發來的數據   
  51. {   
  52. //向客戶端發送信息   
  53. writer.writeUTF("您的情書已經收到");   
  54. writer.flush();   
  55. System.out.println("來自客戶端:"+msg);   
  56. }   
  57. }catch(Exception e){}finally   
  58. {   
  59. try   
  60. {   
  61. sManager.remove(socket);  //刪除套接字   
  62. //關閉輸入輸出流及套接字   
  63. if(reader!=null)reader.close();   
  64. if(writer!=null)writer.close();   
  65. if(socket!=null)socket.close();   
  66. reader=null;   
  67. writer=null;   
  68. socket=null;   
  69. System.out.println("客戶端離開");//向屏幕輸出相關信息   
  70. System.out.println("當前客戶端的連接數:"+sManager.size());   
  71. }catch(Exception e){}   
  72. }   
  73. }   
  74. }   
  75. }   
  76. import java.net.*;  
  77. import java.io.*;  
  78. import java.util.*;  
  79. public class Jserver3 {  
  80. private ServerSocket server;  
  81. List sManager = new ArrayList();  
  82. public Jserver3(){}  
  83. void startServer() //運行服務器  
  84. {  
  85. try  
  86. {  
  87. server=new ServerSocket(719);  
  88. System.out.println("服務器套接字已創建成功!");  
  89. while(true)  
  90. {  
  91. Socket socket=server.accept();  
  92. System.out.println("已經與客戶端連接");  
  93. new J_Thread(socket).start();  
  94. sManager.add(socket);  
  95. System.out.println("當前客戶端連結數:"+sManager.size());  
  96. }  
  97. }catch(Exception e){}finally  
  98. {  
  99. try  
  100. {  
  101. server.close();  
  102. }catch(Exception e){}  
  103. }  
  104. }  
  105. public static void main(String[] args) {  
  106. Jserver3 server=new Jserver3();  
  107. server.startServer();  
  108. }  
  109. class J_Thread extends Thread  //與客戶端進行通信的線程類  
  110. {  
  111. Socket socket;   //套接字引用變量  
  112. private DataInputStream reader;   //套接字輸入流  
  113. private DataOutputStream writer;  //套接字輸出流  
  114. J_Thread(Socket socket)   //構造函數  
  115. {  
  116. this.socket=socket;  
  117. }  
  118. public void run()  
  119. {  
  120. try  
  121. {  
  122. reader=new DataInputStream(socket.getInputStream());//獲取套接字的輸入流  
  123. writer=new DataOutputStream(socket.getOutputStream());//獲取套接字的輸出流  
  124. String msg;  
  125. while((msg=reader.readUTF())!=null)//如果收到客戶端發來的數據  
  126. {  
  127. //向客戶端發送信息  
  128. writer.writeUTF("您的情書已經收到");  
  129. writer.flush();  
  130. System.out.println("來自客戶端:"+msg);  
  131. }  
  132. }catch(Exception e){}finally  
  133. {  
  134. try  
  135. {  
  136. sManager.remove(socket);  //刪除套接字  
  137. //關閉輸入輸出流及套接字  
  138. if(reader!=null)reader.close();  
  139. if(writer!=null)writer.close();  
  140. if(socket!=null)socket.close();  
  141. reader=null;  
  142. writer=null;  
  143. socket=null;  
  144. System.out.println("客戶端離開");//向屏幕輸出相關信息  
  145. System.out.println("當前客戶端的連接數:"+sManager.size());  
  146. }catch(Exception e){}  
  147. }  
  148. }  
  149. }  

嘎嘎 在這段代碼里,服務端MM為每一個連接的客戶端GG分配一個單獨的線程,而每一個線程里都持有對應的客戶端GG的Java 多客戶端通信對象。SO,通過這些多線程,服務端MM就練就了一心N用的功力,可以同時接受N個客戶端GG發來的情書了(,真的太賤了。。。。)

客戶端的代碼和上面的客戶端代碼一模一樣的,這里就不多說啦!
 

【編輯推薦】

  1. Java線程通信簡單調試方法介紹
  2. Java線程如何才能管理好自己的“小弟”
  3. Java線程和Objec之間的不解之緣
  4. Java線程池在運行后的結果反查
  5. Java線程池在使用中的問題解疑
責任編輯:張浩 來源: 博客園
相關推薦

2009-08-21 16:14:52

服務端與客戶端通信

2009-08-21 15:59:22

服務端與客戶端通信

2010-03-19 09:26:34

Java Socket

2011-09-09 09:44:23

WCF

2010-03-19 18:17:17

Java Server

2009-08-21 15:36:41

服務端與客戶端

2009-08-21 15:54:40

服務端與客戶端

2023-03-06 08:01:56

MySQLCtrl + C

2024-03-06 14:58:52

客戶端微服務架構

2010-11-19 14:22:04

oracle服務端

2023-04-03 08:13:05

MySQLCtrl + C

2021-10-19 08:58:48

Java 語言 Java 基礎

2014-08-11 16:35:35

KafkaJava客戶端

2015-01-13 10:32:23

RestfulWeb框架

2010-07-19 16:30:19

Telnet客戶端

2021-06-11 06:54:34

Dubbo客戶端服務端

2010-03-18 16:49:43

Java Socket

2013-01-05 11:30:55

FacebookFacebook客戶端

2022-01-05 08:03:23

C#通信Rest

2022-09-05 14:36:26

服務端TCP連接
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 三级免费 | 97超碰站 | 国产一级片一区二区 | 国产精品成人在线 | 美女天天干天天操 | 免费在线成人 | 中文字幕乱码一区二区三区 | 天堂中文资源在线 | 国产高清在线精品一区二区三区 | 国产激情三区 | 仙人掌旅馆在线观看 | 国产精品自拍视频网站 | 国产一区二区三区免费 | 最新国产精品视频 | 99久久久无码国产精品 | 大乳boobs巨大吃奶挤奶 | 久草免费在线视频 | 丝袜美腿一区二区三区 | 精品国产伦一区二区三区观看说明 | 国产综合区 | 天天色天天 | 国产福利在线视频 | 国产精品久久久久久久久久 | 精品欧美一区二区三区久久久 | 偷拍亚洲色图 | 欧美成人精品一区二区三区 | 99精品一区二区 | 天天操夜夜操 | 91色啪| 久久国产日韩 | 美国黄色一级片 | 日韩三级免费网站 | 午夜一区二区三区在线观看 | 一区二区精品在线 | 久久久国产精品 | 欧美一级在线视频 | 国产91丝袜在线播放 | 国产精品片 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 九九综合 | 亚洲一区二区在线视频 |