日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
JavaSocket實(shí)戰(zhàn)之二:多線程通信

上一篇文章說(shuō)到怎樣寫(xiě)一個(gè)最簡(jiǎn)單的Java Socket通信,但是在上一篇文章中的例子有一個(gè)問(wèn)題就是Server只能接受一個(gè)Client請(qǐng)求,當(dāng)?shù)谝粋€(gè)Client連接后就占據(jù)了這個(gè)位置,后續(xù)Client不能再繼續(xù)連接,所以需要做些改動(dòng),當(dāng)Server沒(méi)接受到一個(gè)Client連接請(qǐng)求之后,都把處理流程放到一個(gè)獨(dú)立的線程里去運(yùn)行,然后等待下一個(gè)Client連接請(qǐng)求,這樣就不會(huì)阻塞Server端接收請(qǐng)求了。每個(gè)獨(dú)立運(yùn)行的程序在使用完Socket對(duì)象之后要將其關(guān)閉。

成都創(chuàng)新互聯(lián)公司專注于榆中網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供榆中營(yíng)銷型網(wǎng)站建設(shè),榆中網(wǎng)站制作、榆中網(wǎng)頁(yè)設(shè)計(jì)、榆中網(wǎng)站官網(wǎng)定制、小程序定制開(kāi)發(fā)服務(wù),打造榆中網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供榆中網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

具體代碼如下:

 
 
 
  1. package com.googlecode.garbagecan.test.socket.sample2;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. public class MyServer {
  9.     public static void main(String[] args) throws IOException {
  10.         ServerSocket server = new ServerSocket(10000);
  11.         
  12.         while (true) {
  13.             Socket socket = server.accept();
  14.             invoke(socket);
  15.         }
  16.     }
  17.     
  18.     private static void invoke(final Socket client) throws IOException {
  19.         new Thread(new Runnable() {
  20.             public void run() {
  21.                 BufferedReader in = null;
  22.                 PrintWriter out = null;
  23.                 try {
  24.                     in = new BufferedReader(new InputStreamReader(client.getInputStream()));
  25.                     out = new PrintWriter(client.getOutputStream());
  26.                     while (true) {
  27.                         String msg = in.readLine();
  28.                         System.out.println(msg);
  29.                         out.println("Server received " + msg);
  30.                         out.flush();
  31.                         if (msg.equals("bye")) {
  32.                             break;
  33.                         }
  34.                     }
  35.                 } catch(IOException ex) {
  36.                     ex.printStackTrace();
  37.                 } finally {
  38.                     try {
  39.                         in.close();
  40.                     } catch (Exception e) {}
  41.                     try {
  42.                         out.close();
  43.                     } catch (Exception e) {}
  44.                     try {
  45.                         client.close();
  46.                     } catch (Exception e) {}
  47.                 }
  48.             }
  49.         }).start();
  50.     }
  51. }

下面是Client程序代碼:

 
 
 
  1. package com.googlecode.garbagecan.test.socket.sample2;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. import java.io.PrintWriter;
  5. import java.net.Socket;
  6. public class MyClient {
  7.     public static void main(String[] args) throws Exception {
  8.         Socket socket = new Socket("localhost", 10000);
  9.         BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  10.         PrintWriter out = new PrintWriter(socket.getOutputStream());
  11.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  12.         while (true) {
  13.             String msg = reader.readLine();
  14.             out.println(msg);
  15.             out.flush();
  16.             if (msg.equals("bye")) {
  17.                 break;
  18.             }
  19.             System.out.println(in.readLine());
  20.         }
  21.         socket.close();
  22.     }
  23. }

測(cè)試,首先運(yùn)行MyServer類,然后運(yùn)行兩個(gè)MyClient類,然后分別在每個(gè)MyClient的提示符下輸入字符串,就可以看到Server可以分別接收處理每個(gè)Client的請(qǐng)求了。


網(wǎng)頁(yè)題目:JavaSocket實(shí)戰(zhàn)之二:多線程通信
網(wǎng)頁(yè)URL:http://www.dlmjj.cn/article/dhcecse.html