亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

使用Java實現簡單的server/client回顯功能的方法介紹

2019-11-20 22:45:07
字體:
來源:轉載
供稿:網友

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

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

java網絡模型圖

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

 

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

客戶端程序代碼如下:

復制代碼 代碼如下:

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);
             // 新建網絡連接的輸入流。
             BufferedReader in = new BufferedReader(new InputStreamReader(s
                     .getInputStream()));
             // 新建網絡連接的自動刷新的輸出流。
             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) {
                 // 讀取從控制臺輸入的字符串,并向網絡連接輸出,即向服務器端發送數據。
                 out.println(stdin.readLine());
                 // 從網絡連接讀取一行,即接收服務器端的數據。
                 String str = in.readLine();
         // 如果接收到的數據為空(如果直接按Enter,不是空數據),則退出循環,關閉連接。
                 if (str == null) {
                     break;
                 }
                 System.out.println(str);
             }
             s.close();
         } catch (IOException e) {
             System.err.println("IOException" + e.getMessage());
         }
     }
 }

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

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

復制代碼 代碼如下:

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 {
             // 已經連接上的客戶端的序號。
             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);
                 // 啟動一個線程來進行服務器端和客戶端的數據傳輸。
                 // 主程序繼續監聽是否有請求到來。
                 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 {
             // 新建網絡連接的輸入流。
             BufferedReader in = new BufferedReader(new InputStreamReader(s
                     .getInputStream()));
             // 新建網絡連接的自動刷新的輸出流。
             PrintWriter out = new PrintWriter(new BufferedWriter(
                     new OutputStreamWriter(s.getOutputStream())),true);
             System.out.println("Hello! Enter BYE to exit.");
             // 回顯客戶端的輸入。
             while (true) {
                 // 從網絡連接讀取一行,即接收客戶端的數據。
                 String line = in.readLine();
         // 如果接收到的數據為空(如果直接按Enter,不是空數據),則退出循環,關閉連接。
                 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);
                     // 向網絡連接輸出一行,即向客戶端發送數據。
                     out.println("Echo " + n + ": " + line);
                 }
             }
             // 關閉套接字。
             s.close();
         } catch (IOException e) {
             System.err.println("IOException");
         }
     }
 }

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
人人澡人人澡人人看欧美| 俺也去精品视频在线观看| 欧美性xxxx极品hd欧美风情| 欧美香蕉大胸在线视频观看| 91亚洲精品久久久| 国产人妖伪娘一区91| 日韩高清电影免费观看完整| 色婷婷综合成人| 成人黄色免费网站在线观看| 亚洲bt欧美bt日本bt| 国内精品久久久久久久| 国产视频综合在线| 国产69久久精品成人看| 亚洲在线观看视频| 精品国产精品三级精品av网址| 久久免费视频在线观看| 97香蕉超级碰碰久久免费的优势| 精品国内产的精品视频在线观看| 精品在线小视频| 欧美午夜精品久久久久久人妖| 欧美限制级电影在线观看| 亚洲综合色激情五月| 91国内产香蕉| 国产精品永久免费观看| 97久久久免费福利网址| 亚洲人成在线播放| 亚洲理论在线a中文字幕| 日韩av综合网站| 久久久久久欧美| www.欧美视频| 精品高清美女精品国产区| 成人欧美在线视频| 日本一区二区不卡| 色偷偷9999www| 亚洲国产一区二区三区四区| 亚洲成人网久久久| 亚洲色图偷窥自拍| 欧美激情免费在线| 精品久久久视频| 亚洲美女久久久| 欧美夜福利tv在线| 北条麻妃久久精品| 国产精品福利小视频| 亚洲精品电影久久久| 国产视频精品免费播放| 亚洲欧美日韩一区二区在线| 国产精品av网站| 亚洲精品suv精品一区二区| 久久成人18免费网站| 亚洲午夜小视频| 精品小视频在线| 亚洲成人网av| 欧美激情精品久久久久久大尺度| 国产91热爆ts人妖在线| 欧美精品九九久久| 51午夜精品视频| 亚洲精品成人久久| 亚洲热线99精品视频| 欧美亚洲另类制服自拍| 91精品久久久久久久久久另类| 国产欧美日韩免费看aⅴ视频| 欧美又大又粗又长| 国产日韩欧美在线看| 久久91亚洲精品中文字幕奶水| 一色桃子一区二区| 亚洲欧美三级伦理| 亚洲精品一区中文字幕乱码| 日韩av综合网站| 最近的2019中文字幕免费一页| 最近2019中文字幕mv免费看| 国产日产亚洲精品| 中文字幕日韩高清| 精品中文字幕乱| 久久久久久com| 一夜七次郎国产精品亚洲| 国产美女91呻吟求| 欧美激情图片区| 中文字幕亚洲无线码在线一区| 亚洲性视频网址| 精品福利在线看| 欧美日韩一区二区在线播放| 国产午夜精品理论片a级探花| 中文字幕精品在线| 最近日韩中文字幕中文| 久久久www成人免费精品张筱雨| 亚洲女同精品视频| 日韩一区二区欧美| 欧美成人免费全部| 亚洲淫片在线视频| 日韩视频永久免费观看| 91在线精品播放| 亚洲丝袜av一区| 在线视频欧美日韩精品| 久久躁狠狠躁夜夜爽| 欧美成人免费全部观看天天性色| 欧美另类极品videosbest最新版本| 成人国产精品色哟哟| 久久免费国产精品1| 国产一区二区视频在线观看| 蜜臀久久99精品久久久无需会员| 亚洲日韩欧美视频一区| 欧美理论在线观看| 成人福利在线视频| 精品一区二区电影| 午夜精品一区二区三区av| 成人字幕网zmw| 亚洲成人黄色在线观看| 日韩精品视频在线| 亚洲女人初尝黑人巨大| 亚洲黄页网在线观看| 国产精品久久久久久五月尺| 51视频国产精品一区二区| 海角国产乱辈乱精品视频| 国产精品 欧美在线| 国产精品美腿一区在线看| 久久亚洲精品视频| 成人黄色中文字幕| 国产精品扒开腿做| 国产精品视频xxxx| 中文字幕亚洲综合| 国产精品第3页| 久久免费视频在线| 国产精品久久久久av免费| 国产成人91久久精品| 超碰91人人草人人干| 久久精品电影网站| 亚洲美女在线视频| 欧美性猛交xxxx乱大交极品| 国产精品视频公开费视频| 国产精品久久久久久久久粉嫩av| 欧美精品在线免费| 一区二区欧美亚洲| 欧美精品第一页在线播放| 欧美孕妇毛茸茸xxxx| 亚洲欧美www| 在线视频欧美日韩精品| 国产欧美日韩亚洲精品| 国产精品美女999| 亚洲国产私拍精品国模在线观看| 亚洲欧美制服综合另类| 国产美女被下药99| 欧美极品少妇与黑人| 欧美大片免费观看| 日韩在线资源网| 国产日韩欧美一二三区| 久久久久久高潮国产精品视| 美女扒开尿口让男人操亚洲视频网站| 亚洲精品乱码久久久久久按摩观| 欧美视频13p| 日韩中文字幕亚洲| 欧美精品激情在线| 国产精品成人国产乱一区| 在线观看国产成人av片| 国产亚洲欧美一区| 欧洲中文字幕国产精品| 中文字幕日韩欧美在线视频| 国产日韩欧美电影在线观看| 亚洲国产精品悠悠久久琪琪| 久久久999国产| 黄色精品在线看| 国产精品私拍pans大尺度在线| 51色欧美片视频在线观看| 97国产suv精品一区二区62| 亚洲精品视频久久|