日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java多客戶端通信服務(wù)端代碼介紹

Java 多客戶端通信在很多人看來是一項(xiàng)很繁瑣的工作,其實(shí)我們?cè)诰帉懘a的時(shí)候只要是注意留心Java 多客戶端通信的源代碼就能發(fā)現(xiàn),我們認(rèn)為枯燥的東西其實(shí)都很簡單。

創(chuàng)新互聯(lián)成立于2013年,先為錫山等服務(wù)建站,錫山等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為錫山企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

來看服務(wù)端的代碼:

 
 
 
  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() //運(yùn)行服務(wù)器 
  9. try 
  10. server=new ServerSocket(719); 
  11. System.out.println("服務(wù)器套接字已創(chuàng)建成功!"); 
  12. while(true) 
  13. Socket socket=server.accept(); 
  14. System.out.println("已經(jīng)與客戶端連接"); 
  15. new J_Thread(socket).start(); 
  16. sManager.add(socket); 
  17. System.out.println("當(dāng)前客戶端連結(jié)數(shù):"+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  //與客戶端進(jìn)行通信的線程類 
  26. Socket socket;   //套接字引用變量 
  27. private DataInputStream reader;   //套接字輸入流 
  28. private DataOutputStream writer;  //套接字輸出流 
  29. J_Thread(Socket socket)   //構(gòu)造函數(shù) 
  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)//如果收到客戶端發(fā)來的數(shù)據(jù) 
  37. //向客戶端發(fā)送信息 
  38. writer.writeUTF("您的情書已經(jīng)收到"); 
  39. writer.flush(); 
  40. System.out.println("來自客戶端:"+msg); 
  41. }catch(Exception e){}finally 
  42. try 
  43. sManager.remove(socket);  //刪除套接字 
  44. //關(guān)閉輸入輸出流及套接字 
  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("客戶端離開");//向屏幕輸出相關(guān)信息 
  52. System.out.println("當(dāng)前客戶端的連接數(shù):"+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() //運(yùn)行服務(wù)器
  62. {
  63. try
  64. {
  65. server=new ServerSocket(719);
  66. System.out.println("服務(wù)器套接字已創(chuàng)建成功!");
  67. while(true)
  68. {
  69. Socket socket=server.accept();
  70. System.out.println("已經(jīng)與客戶端連接");
  71. new J_Thread(socket).start();
  72. sManager.add(socket);
  73. System.out.println("當(dāng)前客戶端連結(jié)數(shù):"+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  //與客戶端進(jìn)行通信的線程類
  88. {
  89. Socket socket;   //套接字引用變量
  90. private DataInputStream reader;   //套接字輸入流
  91. private DataOutputStream writer;  //套接字輸出流
  92. J_Thread(Socket socket)   //構(gòu)造函數(shù)
  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)//如果收到客戶端發(fā)來的數(shù)據(jù)
  104. {
  105. //向客戶端發(fā)送信息
  106. writer.writeUTF("您的情書已經(jīng)收到");
  107. writer.flush();
  108. System.out.println("來自客戶端:"+msg);
  109. }
  110. }catch(Exception e){}finally
  111. {
  112. try
  113. {
  114. sManager.remove(socket);  //刪除套接字
  115. //關(guān)閉輸入輸出流及套接字
  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("客戶端離開");//向屏幕輸出相關(guān)信息
  123. System.out.println("當(dāng)前客戶端的連接數(shù):"+sManager.size());
  124. }catch(Exception e){}
  125. }
  126. }
  127. }
  128. }

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

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


當(dāng)前文章:Java多客戶端通信服務(wù)端代碼介紹
文章來源:http://m.5511xx.com/article/cdjcpij.html