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

首頁 > 學院 > 開發設計 > 正文

javaSocket編程

2019-11-14 14:59:18
字體:
來源:轉載
供稿:網友

一.網絡通信,常見的結構是C/S模式。客戶端在需要服務時向服務器請求連接,服務端被動接收連接,建立連接后,雙方開始通信。服務器進程一般作為守護進程,一直運行,不斷監聽網絡端口,被動接收客戶端的請求,當接收到客戶的請求時,會啟動一個服務進程來處理客戶的請求,并繼續監聽網絡端口。

(上圖轉自:http://tutorials.jenkov.com/java-networking/index.html)

二.網絡上進程之間通過雙向的通信連接來實現信息的交換。這樣連接的一端稱為一個Socket。Socket由ip號和端口號確定。在java中使用Socket來實現基于TCP/IP協議的網絡程序,主要涉及到下面幾步:

客戶端:

1.根據服務器的IP和端口號,建立Socket

2.打開輸入、輸出流

3.對Socket進行讀寫

4.關閉輸入、輸出流,關閉套接字

服務器端:

1.根據端口號建立ServerSocket

2.被動監聽客戶端請求

3.當監聽到客戶端請求時,接收請求,啟動工作線程,處理請求。若不再接收請求時,進入4;否則,繼續監聽,轉2

4.關閉ServerSocket

下面以例子來說明:

客戶端代碼:

package com.net.examples;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;public class Client {    /**     * @param args     * @throws IOException      * @throws UnknownHostException      * @throws InterruptedException      */    public static void main(String[] args) throws UnknownHostException,         IOException, InterruptedException {        //這里假設有三個client,每個client分別發送一次請求        int clientCount = 3;        MyRunable run = new MyRunable();        while(clientCount > 0){            //每個線程模擬一個client,三個線程名分別為1,2,3            new Thread(run,clientCount+"").start();            clientCount--;        }    }}//定義MyRunable,重寫run方法實現client線程class MyRunable implements Runnable{    public void run() {        int messCount = 2;        Socket socket = null;        DataOutputStream o = null;        DataInputStream in = null;        try {            //1.創建Socket,建立連接            socket = new Socket("127.0.0.1",8080);            //2.打開輸入輸出流            o = new DataOutputStream(socket.getOutputStream());            in = new DataInputStream(socket.getInputStream());            System.out.);                //每個client對Socket寫兩次            while(messCount > 0 ){                try {                    //3.對Socket進行寫                    o.writeUTF("" + messCount);                    o.flush();                } catch (IOException e) {                    e.printStackTrace();                }                System.out.println("I am client:"+Thread.currentThread().getName() +",I send message:" + messCount);                messCount--;            }            //對Socket進行讀            System.out.println("I am client:" + Thread.currentThread().getName() + ",and server "+ in.readUTF() + "(me!)");        } catch (IOException e2) {            e2.printStackTrace();        } finally{            try {                //4.關閉輸入輸出流,關閉socket,釋放資源                o.close();                in.close();                socket.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

服務端代碼:

package com.net.examples;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;//Serverpublic class Server {    private static int clientCount = 3;    //Server線程結束運行條件,這里是假設知道一共會收到三次客戶端請求    private static boolean isStop(){        return clientCount == 0 ? true:false;    }    public static void main(String[] args) throws IOException, InterruptedException {        //1.建立ServerSocket        ServerSocket serverSocket = new ServerSocket(8080);        //2.監聽客戶端請求        while(!isStop()){            //3.接收到客戶端請求,并啟動一個線程處理            Socket client = serverSocket.accept();            new MyThread(client,clientCount).start();            clientCount--;        }        //4.關閉ServerSocket        serverSocket.close();    }}//客戶端請求處理線程class MyThread extends Thread{    private Socket clientSocket;    private int id;    private DataInputStream input;    private DataOutputStream output ;    public MyThread (){    }    public MyThread(Socket soc,int i){        this.clientSocket = soc;        this.id = i;    }    public void run(){        try {            //獲得輸入輸出流            input = new DataInputStream((clientSocket.getInputStream()));            output = new DataOutputStream(clientSocket.getOutputStream());            int count = 2;            //讀取Socket            while(count > 0){                System.out.println("I am server.I have received message:" + input.readUTF() + ",from" + id);                count --;            }            //寫Socket            output.writeUTF("respose to client" + id);            output.flush();;        } catch (IOException e) {            e.printStackTrace();        }finally {            try {                //釋放資源,關閉連接                input.close();                output.close();                clientSocket.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

運行結果如下:

client:

Server:

 

不過,后來我稍微地改了下Client.java文件中MyRunable.java,輸出流o,在對Socket寫完之后,就調用了o.close()方法,而不是在讀完Socket后釋放掉,重新跑程序后client跑的就有錯出現了,Server程序沒出錯。具體如改動下紅色的部分,而報錯也如下圖:

我的理解是,輸出流不用了,所以就close()了,為什么在讀Socket時(58行的代碼),會報socket closed這樣的出錯信息。難道調用o.close()時,會關閉socket??或者是其他原因,實在不理解,剛剛看著java Socket這一塊,好多不清楚。麻煩看到的童鞋幫解答下。。。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线视频观看正片免费网站| 亚洲一区二区三区四区在线播放| 久久综合免费视频影院| 亚洲品质视频自拍网| 亚洲欧美国产日韩中文字幕| 亚洲毛茸茸少妇高潮呻吟| 91久久精品日日躁夜夜躁国产| 亚洲欧美另类人妖| 日韩中文字幕在线| 日韩精品在线观看视频| 日韩视频在线观看免费| 久久不射热爱视频精品| 国产日韩av高清| 亚洲国产精品久久久| 深夜福利日韩在线看| 26uuu国产精品视频| 欧美午夜精品久久久久久久| 亚洲无限av看| 久久久久久国产精品三级玉女聊斋| 国产v综合ⅴ日韩v欧美大片| 国产精品偷伦一区二区| 日韩欧美国产中文字幕| 亚洲激情电影中文字幕| 日韩二区三区在线| 国产欧美日韩丝袜精品一区| 色婷婷亚洲mv天堂mv在影片| 国产精品视频免费观看www| 欧美日韩国产成人高清视频| 欧美性20hd另类| 久久久国产视频| 久久久久久久久国产精品| 国产成+人+综合+亚洲欧美丁香花| 亚洲福利视频网站| 69av在线视频| 91精品国产高清自在线| 国产美女精品视频免费观看| 国内免费精品永久在线视频| 日韩视频精品在线| 国产精品久久久久久婷婷天堂| 精品久久久久国产| 国产一区二区三区视频免费| 欧美精品在线网站| 精品性高朝久久久久久久| 91成人福利在线| 欧美大片网站在线观看| 亚洲91精品在线| 国产精品激情av电影在线观看| 欧美精品18videosex性欧美| 亚洲免费中文字幕| 亚洲精品午夜精品| 国产a级全部精品| 色综合久久中文字幕综合网小说| 午夜精品视频网站| 亚洲国产精品福利| 国产福利精品视频| 亚洲三级 欧美三级| 欧美专区福利在线| 精品性高朝久久久久久久| 成人在线观看视频网站| 91国产视频在线| 国产精品国产三级国产aⅴ9色| 热久久美女精品天天吊色| 国产精品视频一区国模私拍| 国产精品成人一区二区三区吃奶| 91在线高清视频| 国产在线播放91| 色吧影院999| 亚洲欧美一区二区激情| 欧美另类精品xxxx孕妇| 国产欧美日韩免费看aⅴ视频| 中文字幕日本欧美| 日韩av电影手机在线观看| 国产欧美精品xxxx另类| 成年无码av片在线| 精品久久久久久| 成人网址在线观看| 色吧影院999| 精品偷拍一区二区三区在线看| 最好看的2019的中文字幕视频| 亚洲国产97在线精品一区| 国模吧一区二区| 美女国内精品自产拍在线播放| 欧美一级淫片播放口| 欧美黑人一区二区三区| 亚州精品天堂中文字幕| 岛国av一区二区在线在线观看| 亚洲欧美日韩在线高清直播| 日本久久久久久久| 亚洲电影免费观看高清完整版在线| 欧美成人精品影院| 精品一区电影国产| 国产成人综合av| 91精品视频网站| 久久亚洲精品小早川怜子66| 亚洲最大激情中文字幕| 欧美性色视频在线| 在线亚洲午夜片av大片| 欧美极品少妇与黑人| 51色欧美片视频在线观看| 欧美性视频在线| 精品国内自产拍在线观看| 亚洲综合成人婷婷小说| 亚洲激情小视频| 欧美—级高清免费播放| 亚洲精品中文字| 亚洲国产精久久久久久久| 欧美色播在线播放| 欧美激情影音先锋| 91色p视频在线| 性欧美激情精品| 成人国产精品一区二区| 精品日本高清在线播放| 欧美一级片免费在线| 亚洲美女www午夜| 国内精品一区二区三区四区| 在线亚洲国产精品网| 欧美黄色小视频| 国产小视频91| 亚洲天堂男人天堂女人天堂| 2019国产精品自在线拍国产不卡| 亚洲国产美女久久久久| 国内外成人免费激情在线视频| 欧美另类极品videosbest最新版本| 亚洲片国产一区一级在线观看| 欧美在线视频一区| 精品日韩中文字幕| 国产一区二区成人| 国外成人免费在线播放| 亚洲人成网站999久久久综合| 亚洲第一精品自拍| 性色av香蕉一区二区| 欧美在线视频免费播放| 日韩欧美亚洲综合| 国产91久久婷婷一区二区| 国产精品在线看| 久久久久久久久久久久久久久久久久av| 亚洲国产精品va| 一二美女精品欧洲| 成人精品在线视频| 91色在线观看| zzijzzij亚洲日本成熟少妇| 欧美成人午夜视频| 国产日本欧美一区二区三区在线| 伊人久久综合97精品| 欧美一区二粉嫩精品国产一线天| 亚洲精品欧美日韩专区| 久久天天躁狠狠躁夜夜躁2014| 美女久久久久久久| 国产亚洲欧美日韩精品| 亚洲人成在线免费观看| 日本免费一区二区三区视频观看| 欧美成人手机在线| 精品国产拍在线观看| 国产精品久久久久久久av电影| 91精品国产乱码久久久久久蜜臀| 91国产中文字幕| 国产一区二区三区在线免费观看| 欧美成人一二三| 欧美激情性做爰免费视频| 国产日韩欧美综合| 日韩欧美成人精品| 中文字幕亚洲综合| 亚洲视频在线播放| 最新中文字幕亚洲|