国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > JavaScript > 正文

使用Java實現(xiàn)簡單的server/client回顯功能的方法介紹

2019-11-20 22:45:07
字體:
來源:轉載
供稿:網(wǎng)友

Socket是指在一個特定編程模型下,進程間通信鏈路的端點。因為這個特定編程模型的流行,Socket這個名字在其他領域得到了復用,包括Java叫技術。

如果要建立連接,一臺機器必須運行一個進程來等待連接,而另一臺機器必須試圖到達第一臺機器。這個電話系統(tǒng)類似:一方必須發(fā)起呼叫,而另一方在此時必須等待電話呼叫。

java網(wǎng)絡模型圖

下面通過一個有“回顯”功能的服務器和客戶端來介紹應用java.net包編寫網(wǎng)絡應用程序。

 

這個例子主要功能是服務器端的程序等待客戶的輸入,然后將讀取到的信息回顯給客戶端,同時在服務器端的控制臺輸出。而客戶端從控制臺接收信息后,向客戶端發(fā)送輸入,并接收服務器的回顯數(shù)據(jù),然后顯示在控制臺。

客戶端程序代碼如下:

復制代碼 代碼如下:

package com.javapp.ch11;
 import java.io.*;
 import java.net.*;
 /**
 * Description: 具有“回顯”功能的服務器端和客戶端程序
 */
 public class EchoClientDemo {
     // 服務器端的服務端口。
     public static final int SERVERPORT = 990;
     public static void main(String[] args) {
         try {
             // 建立連接套接字。
             Socket s = new Socket("localhost",SERVERPORT);
             System.out.println("socket = " + s);
             // 新建網(wǎng)絡連接的輸入流。
             BufferedReader in = new BufferedReader(new InputStreamReader(s
                     .getInputStream()));
             // 新建網(wǎng)絡連接的自動刷新的輸出流。
             PrintWriter out = new PrintWriter(new BufferedWriter(
                     new OutputStreamWriter(s.getOutputStream())),true);
             // 先使用System.in構造InputStreamReader,再構造BufferedReader。
             BufferedReader stdin = new BufferedReader(
                     new InputStreamReader(System.in));
             System.out.println("Enter a string, Enter BYE to exit! ");
             while (true) {
                 // 讀取從控制臺輸入的字符串,并向網(wǎng)絡連接輸出,即向服務器端發(fā)送數(shù)據(jù)。
                 out.println(stdin.readLine());
                 // 從網(wǎng)絡連接讀取一行,即接收服務器端的數(shù)據(jù)。
                 String str = in.readLine();
         // 如果接收到的數(shù)據(jù)為空(如果直接按Enter,不是空數(shù)據(jù)),則退出循環(huán),關閉連接。
                 if (str == null) {
                     break;
                 }
                 System.out.println(str);
             }
             s.close();
         } catch (IOException e) {
             System.err.println("IOException" + e.getMessage());
         }
     }
 }

上面客戶端程序中。首先用java.net包中的Socket類建立一個連接套接字,其后應用的Socket對象的getInputStream方法從服務器接收數(shù)據(jù),并且應用Socket對象的getOuputStream方法發(fā)送數(shù)據(jù)到服務器。創(chuàng)建完輸入輸出流,就可以像讀寫文件的方式來讀寫數(shù)據(jù)。

支持多客戶端的“回顯”服務器端程序代碼如下:

復制代碼 代碼如下:

package com.javapp.ch11;
 import java.io.*;
 import java.net.*;
 /**
 * Description:支持多客戶端的“回顯”服務器端程序
 */
 public class EchoServerThreadDemo {
     // 服務器端的服務端口。
     public static final int SERVERPORT = 990;
     public static void main(String[] args) {
         try {
             // 已經(jīng)連接上的客戶端的序號。
             int number = 1;
             // 建立服務器端傾聽套接字。
             ServerSocket s = new ServerSocket(SERVERPORT);
             System.out.println("Started: " + s);
             while (true) {
                 // 等待并接收請求,建立連接套接字。
                 Socket incoming = s.accept();
                 System.out.println("Connection " + number + " accepted: ");
                 System.out.println(incoming);
                 // 啟動一個線程來進行服務器端和客戶端的數(shù)據(jù)傳輸。
                 // 主程序繼續(xù)監(jiān)聽是否有請求到來。
                 Thread t = new EchoThread(incoming,number);
                 t.start();
                 number++;
             }
         } catch (IOException e) {
             System.err.println("IOException");
         }
     }
 }
 class EchoThread extends Thread {
     private Socket s;
     int n;
     public EchoThread(Socket incoming,int number) {
         s = incoming;
         n = number;
     }
     public void run() {
         try {
             // 新建網(wǎng)絡連接的輸入流。
             BufferedReader in = new BufferedReader(new InputStreamReader(s
                     .getInputStream()));
             // 新建網(wǎng)絡連接的自動刷新的輸出流。
             PrintWriter out = new PrintWriter(new BufferedWriter(
                     new OutputStreamWriter(s.getOutputStream())),true);
             System.out.println("Hello! Enter BYE to exit.");
             // 回顯客戶端的輸入。
             while (true) {
                 // 從網(wǎng)絡連接讀取一行,即接收客戶端的數(shù)據(jù)。
                 String line = in.readLine();
         // 如果接收到的數(shù)據(jù)為空(如果直接按Enter,不是空數(shù)據(jù)),則退出循環(huán),關閉連接。
                 if (line == null) {
                     break;
                 } else {
                     if (line.trim().equals("BYE")) {
                         System.out.println("The client " + n + " entered BYE!");
                         System.out.println("Connection " + n + " will be closed!");
                         break;
                     }
                     System.out.println("Echo " + n + ": " + line);
                     // 向網(wǎng)絡連接輸出一行,即向客戶端發(fā)送數(shù)據(jù)。
                     out.println("Echo " + n + ": " + line);
                 }
             }
             // 關閉套接字。
             s.close();
         } catch (IOException e) {
             System.err.println("IOException");
         }
     }
 }

在服務器端程序中,首先用java.net包中的ServerSocket類創(chuàng)建一個服務器端偵聽套接字。其后應用ServerSocket類的accept方法等待并接收用戶請求。當服務器每接收到一個連接請求后,就啟動一個線程來單獨處理服務器和客戶端的數(shù)據(jù)傳輸。服務器端數(shù)據(jù)的接收和發(fā)送與上面介紹的客戶端數(shù)據(jù)的發(fā)送和介紹相同。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产三区在线观看| 开心激情五月婷婷| 国产美女高潮一区二区三区| 樱花草在线观看www| 精品美女视频在线观看免费软件| 欧美性猛交xxxx免费看蜜桃| 秋霞av在线| 尤物网站在线| ·天天天天操| 亚洲永久免费网站| 四虎一区二区三区| www在线视频观看| 另类专区欧美| 最新黄网在线观看| 国产第一页在线视频| 在线视频观看你懂的| 日本欧洲一区| 国产丝袜自拍| av日韩国产| 最新黄网在线观看| 国产黄在线观看| av日韩国产| 中文字幕亚洲精品视频| 国产精品9区| 久草在线资源福利| 2018狠狠干| 国产永久av在线| 亚洲午夜久久久久中文字幕| 国产精品偷乱一区二区三区| 国产盗摄精品一区二区酒店| 日本h片在线观看| 国产精品人人| 福利资源在线久| a视频在线观看| 97视频网站| 九九热视频免费在线观看| 尤物在线精品视频| 国产99re66在线视频| 日韩av成人| 福利视频网址导航| 免费av在线| 亚洲xxxxxx| www操操操| 在线观看视频污| 国产精品乱码一区二区三区视频| 麻豆福利在线观看| 免费精品国产自产拍观看| 一本免费视频| 日本高清中文字幕在线| 夜色资源网av在先锋网站观看| 国产免费a∨片在线观看不卡| 免费在线播放av| 国产原创精品视频| 天堂资源在线中文| 国产三级视频在线看| 国产无遮挡又黄又爽免费软件| 国产精品一二三区视频| 国产在线观看18| 国产三级自拍| av黄色在线观看| 亚洲综合激情六月婷婷在线观看 | 91在线最新| 97操碰视频| 日本欧洲一区| 国产秒拍福利视频露脸| 国产污视频在线| 精品国产一区二区三区四区阿崩 | 国产亚洲精品久久久久久青梅| 最新天堂资源在线资源| 国产区在线视频| 精品日韩av| 日本视频二区| 午夜免费视频在线国产| 精品一二三四| 欧美黑人乱大交| 国产一级在线| 麻豆精品传媒视频观看| 国产成人亚洲精品播放器下载| 性网站在线观看| 国产网友自拍电影在线 | 午夜视频在线看| 国产日韩精品在线看| 日本免费视频www| 国产女主播在线| 国产在线观看网站| 精品国产一区二区三区久久久狼牙 | www.狠狠插| 国产福利片在线| 九九在线观看免费视频| 国产视频第一区| 懂色av一区| 日本在线视频www鲁啊鲁| 国产区视频在线观看| 黄色毛片在线观看| jizz亚洲| 亚洲大香人伊一本线| 国产高清视频在线| 国产探花视频在线观看| 国产蜜臀av在线播放| 日本成人免费网站| 在线国产福利网站| 91欧美在线视频| 国产精品扒开做爽爽爽的视频| 黄色av网站在线| 亚洲精品天堂在线| 亚洲成人av在线影院| 一区免费观看| 在线午夜影院| 日日夜夜中文字幕| 女同一区二区免费aⅴ| 欧美日韩视频精品二区| 久久国产情侣| 国产一起色一起爱| 国产精品入口麻豆免费观看| 国产另类图片| 国产91足控脚交在线观看| 精品麻豆视频| 女人色在线免费视频| 国产男女无套在线播放| 国产精品探花在线| 中文字幕不卡| 在线看a视频| 九九免费视频| 国产精品视频一区二区免费不卡 | 国产三级av在线| 国产成人午夜电影| wwwww亚洲| 丁香婷婷激情| 国产国语**毛片高清视频| av在线天天| 国产精品㊣新片速递bt| 国产成人福利| 国产免费福利网站| 伊人中文字幕在线| 国产原创在线播放| av免费在线观| 国产精美视频| 激情在线视频播放| 99在线免费视频| 丁香花高清在线观看完整版| 精品美女调教视频| 中文字幕在线视频免费观看| 国产95在线|亚洲| 国产资源在线看| 亚洲第一成年免费网站| 日本中文字幕在线视频| 亚洲成年人视频| 国产不卡精品一区二区三区| 国产在线三区| 日本高清中文字幕在线| 精品网站www| 国产人成网在线播放va免费| 国产尤物一区二区三区| 欧美aaa一级片| h网址在线观看| 亚洲视频精品在线观看| 精品欧美色视频网站在线观看 | 欧美日韩**字幕一区| 伊人免费在线| av福利在线观看| 在线免费看黄av| 亚洲综合色视频在线观看 | 精品久久久久一区二区三区| 国产欧美黑人| 国产日产精品久久久久久婷婷| 黄网址在线播放免费| 免费国产阿v视频在线观看| 在线观看的av| 在线国产福利网站| 性欧美精品xxxx| 嫩草在线播放| 国产原创精品视频| 国产探花视频在线观看| 国产一级视频| 国产黄色在线| 精品成人免费自拍视频| 色吊丝av中文字幕| 九九热视频在线观看| 中文字幕国产在线| 91精品专区| 轻轻色免费在线视频| 国产美女极品在线| 国产视频1区| 91在线看片| 超碰免费在线播放| 国产丝袜在线观看视频| 在线播放www| 丁香花高清视频完整版在线观看| 国产一级二级在线| 羞羞视频在线观看免费| 国产免费高清| 一本久中文高清| 国产精品一区在线看| 136福利第一导航国产在线| 性国产高清在线观看| 中文字幕国产视频| 欧美日韩亚洲国内综合网| 天堂资源在线中文| v天堂福利视频在线观看| 国产精品午夜久久久久久|