網(wǎng)絡(luò)編程2019-08-21

目的:網(wǎng)絡(luò)編程:在兩臺(tái)不同的計(jì)算機(jī)之間數(shù)據(jù)傳遞

服務(wù)器端與客戶端的數(shù)據(jù)傳輸蔚舀,單向傳遞蟆盹,雙向傳遞刃泡,終端接收數(shù)據(jù)傳遞等巧娱。

  • 上傳與下載:
    客戶端 1.文本 2.圖片 3.音頻 4.視頻 服務(wù)器端、


    借鑒優(yōu)秀的人的圖片.jpg

技術(shù):

知識(shí)點(diǎn):
* 網(wǎng)絡(luò)編程:在兩臺(tái)不同的計(jì)算機(jī)之間數(shù)據(jù)傳遞
 * 1.QQ聊天
 * 2.打開(kāi)網(wǎng)易APP 刷新界面 就有數(shù)據(jù)
 * 3.打開(kāi)瀏覽器 網(wǎng)頁(yè)www.baidu.com
 *
 * 客戶端:手機(jī)APP 瀏覽器 桌面QQ
 * 服務(wù)器端:存儲(chǔ)/處理數(shù)據(jù)
 *
 * URL : 統(tǒng)一的資源定位
 *  http://www.baidu.com/search?code=android&type=1
 *  http/https: 傳輸協(xié)議   Tcp/IP 具體實(shí)現(xiàn)
 *  www.baidu.com :域名 表示一臺(tái)網(wǎng)絡(luò)中的電腦
 *        (ipv4烘贴、ipv6)ip地址 : 唯一標(biāo)識(shí)一臺(tái)網(wǎng)絡(luò)中的電腦
 *         32位:四個(gè)部分每個(gè)8個(gè)字節(jié)
 *         192.168.43.117 <-> www.baidu.com
 *
 *         DNS服務(wù)器: 域名解析
 *        將www.baidu.com類型的域名解析為對(duì)應(yīng)的Ip地址
 *
 *  search 對(duì)應(yīng)的后臺(tái)程序文件  php java jsp
 *  ? 表示運(yùn)行這個(gè)程序需要傳遞的參數(shù)
 *  code=android :code是服務(wù)器段指定的字段
 *  & 如果有多個(gè)參數(shù) 使用&符號(hào)鏈接
 *
 *  ip地址唯一標(biāo)識(shí)某一臺(tái)電腦
 *  端口號(hào):唯一標(biāo)識(shí)電腦上的某一個(gè)進(jìn)程(程序)80
 *
 *  數(shù)據(jù)傳輸:TCP/IP協(xié)議
 *  TCP : 面向鏈接的 安全  如打電話
 *  UTP : 面向不鏈接的 不安全 快  如古代飛鴿傳書(shū)
 *
 * 網(wǎng)絡(luò)中的數(shù)據(jù)傳輸:Socket實(shí)現(xiàn) -> 套接字
 * Socket類: 客戶端
 * ServerSocket服務(wù)器端
 *
 *   讀取數(shù)據(jù): 服務(wù)器端讀取 客戶端讀取
 *            BufferReader -> InputStreamReader -> socket.getInputStream()
 *            從終端讀冉怼:
 *            BufferReader -> InputStreamReader -> System.in
 *   輸出數(shù)據(jù):客戶端輸出 服務(wù)器端輸出
 *            BufferedWriter -> OutputStreamWriter -> socket.getOutputStream
 *            PrintStream -> socket.getOutputStream

實(shí)際編程:

(1).簡(jiǎn)單的服務(wù)器端與客戶端數(shù)據(jù)傳輸;

定義客戶端:
//模擬客戶端
class Client{
    public static void main(String[] args) throws IOException {
        //1.創(chuàng)建用于通信的Socket
        //指明和誰(shuí)通信:IP地址 端口號(hào)
        Socket socket = new Socket("192.168.43.117",8989);

        //接收服務(wù)器端的數(shù)據(jù)
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line = null;
        while ((line =  br.readLine()) != null){
            System.out.println(line);
        }


        //向服務(wù)器端發(fā)送數(shù)據(jù)
        //socket.getOutputStream();
        PrintStream ps = new PrintStream(socket.getOutputStream());
        ps.println("你好啊");

        //輸出完畢
        socket.shutdownOutput();
    }
}
定義服務(wù)器端:
//模擬服務(wù)器端
class Server{
    public static void main(String[] args) throws IOException {
        //1.創(chuàng)建服務(wù)器端的serverSocket
        ServerSocket ss = new ServerSocket(8989);

        //2.獲取鏈接的客戶端的socket
        Socket clientSocket = ss.accept();

        //3.向客戶端發(fā)送數(shù)據(jù)
        //BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
        PrintStream ps = new PrintStream(clientSocket.getOutputStream());
        ps.println("登錄成功");

        //輸出完畢
        clientSocket.shutdownOutput();

        //4.接收客戶端發(fā)來(lái)的數(shù)據(jù)
        BufferedReader br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        String line = null;
        while ((line = br.readLine()) != null){
            System.out.println(line);
        }
    }
}
調(diào)用時(shí)必須先運(yùn)行服務(wù)器端再運(yùn)行客戶端。

(2)手動(dòng)輸入內(nèi)容 發(fā)送

以上代碼進(jìn)行簡(jiǎn)單更改:
class MyClient{
    public static void main(String[] args){
        //連接服務(wù)器端的Socket
        Socket socket = null;
        try {
            socket = new Socket("192.168.43.117", 8888);

            //接收服務(wù)器信息
            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String line = null;
            while ((line = br.readLine()) != null){
                System.out.println(line);
            }

//            //從終端輸出數(shù)據(jù)桨踪,發(fā)送給服務(wù)器端
//            //獲取終端數(shù)據(jù)
//            BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
//            //獲取向客戶端的輸出數(shù)據(jù)的輸出流
//            PrintStream ps = new PrintStream(socket.getOutputStream());
//            String txet = null;
//            while ((txet = keyin.readLine()) != null){
//                ps.println(txet);
//            }

        }catch (IOException e){
            System.out.println("網(wǎng)絡(luò)出錯(cuò) 請(qǐng)重新登錄");
        }finally {
            try{
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}
class MyServer{
    public static void main(String[] args){
        //創(chuàng)建ServerSocket
        try(ServerSocket serverSocket = new ServerSocket(8888)){
            //監(jiān)聽(tīng)客服端的連接
            Socket clientSocket = serverSocket.accept();

            //從終端接收數(shù)據(jù)
            BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
            //獲取向客戶端的輸出數(shù)據(jù)的輸出流
            PrintStream ps = new PrintStream(clientSocket.getOutputStream());
            String line = null;
            while ((line = keyin.readLine()) != null){
                //發(fā)送給客戶端
                ps.println(line);
            }

//            //接收客戶端的數(shù)據(jù)
//            BufferedReader br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
//            String text = null;
//            while ((text = br.readLine()) != null){
//                System.out.println(text);
//            }

        }catch (IOException e){
            e.printStackTrace();
        }


    }
}

(3) * 客戶端向服務(wù)器端發(fā)送圖片 post上傳

class Client1{
    public static void main(String[] args) throws IOException {
        //連接服務(wù)器 獲取socket
        Socket socket = new Socket("192.168.43.117", 9999);

        //創(chuàng)建服務(wù)器端對(duì)應(yīng)的輸入流 用于接收服務(wù)器端發(fā)來(lái)的數(shù)據(jù)
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        System.out.println(br.readLine());

        //向服務(wù)器端發(fā)送文件(圖片)
        //1.將文件寫(xiě)入內(nèi)存里面
        String path = "C:\\Users\\DELL\\Desktop\\1.png";
        FileInputStream fis = new FileInputStream(path);

//        //2老翘,將內(nèi)容輸出到服務(wù)器端
//        PrintStream ps= new PrintStream(socket.getOutputStream());
//
//        //3.將文件的內(nèi)容一點(diǎn)一點(diǎn)地傳送給服務(wù)器
//        byte[] buf = new byte[1024];
//        int len = -1;
//        while ((len = fis.read(buf)) != -1){
//            ps.println(new String(buf,0,len));
//        }

        //2.創(chuàng)建字節(jié)流 outputStream
        BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
        byte[] buf = new byte[1024];
        int len = -1;
        while ((len = fis.read(buf)) != -1){
            bos.write(buf,0,len);
        }
        socket.shutdownOutput();

    }
}
class Server1{
    public static void main(String[] args) throws IOException {
        //創(chuàng)建服務(wù)器端的ServerSocket
        ServerSocket ss = new ServerSocket(9999);

        //監(jiān)聽(tīng)客戶端鏈接
        //當(dāng)有客戶端來(lái)連接這個(gè)服務(wù)器 就可以得到對(duì)應(yīng)的socket
        //當(dāng)沒(méi)有客戶端連接 服務(wù)器一直在這里等待
        Socket socket = ss.accept();

        //創(chuàng)建客戶端對(duì)應(yīng)的輸出流 用于向這個(gè)客戶端發(fā)送數(shù)據(jù)
        PrintStream ps = new PrintStream(socket.getOutputStream());
        ps.println("連接成功 可以發(fā)送數(shù)據(jù)!");

//        //接收客戶端傳遞過(guò)來(lái)的圖片
//        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//
//        //文件對(duì)應(yīng)的輸出流
//        String path = "E:\\JavaStudy\\JavaXuexi\\src\\main\\java\\day12\\2.png";
//        PrintStream psFile = new PrintStream(new FileOutputStream(path));
//
//        String line = null;
//        char[] buf = new char[1024];
//        int len = -1;
//        while ((len = br.read(buf)) != -1){
//            //將字符數(shù)組轉(zhuǎn)化為字符串
//            line = new String(buf,0,len);
//            //將字符串寫(xiě)入到文件
//            psFile.println(line);

        BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
        String path = "E:\\JavaStudy\\JavaXuexi\\src\\main\\java\\day12\\2.png";
        FileOutputStream fos = new FileOutputStream(path);

        byte[] buf = new byte[1024];
        int len = -1;
        while((len = bis.read(buf)) != -1){
            fos.write(buf,0,len);

        }
    }
}

(4) 服務(wù)器端與客戶端 對(duì)聊

  • 客戶端好服務(wù)器端都可以隨意地發(fā)送內(nèi)容
  • 從終端輸入
  • 客戶端:
    主線程:接收終端輸入 將終端輸入發(fā)送給服務(wù)器端
    子線程:接收服務(wù)器端發(fā)過(guò)來(lái)的數(shù)據(jù)
    服務(wù)器端:
    主線程:接收終端輸入 將1終端輸入發(fā)送給客戶端
    子線程:接收客戶端發(fā)過(guò)來(lái)的數(shù)據(jù)
定義Clinet,Server類主線程:
class Client {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("192.168.43.117", 8888);
        //子線程 處理服務(wù)端數(shù)據(jù)
        new Thread(new ClientThread(socket)).start();

        BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
        //客戶端的輸出流對(duì)象
        PrintStream printStream = new PrintStream(socket.getOutputStream());
        String line = null;
        while ((line = keyin.readLine()) != null) {
            printStream.println(line);
        }


    }
}
class Server{
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(8888);
        //獲取客戶端的socket
        Socket socket = ss.accept();

        //創(chuàng)建子線程 處理客戶端的輸入信息
        new ServerThread(socket).start();

        //終端輸入流對(duì)象
        BufferedReader keyin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        //客戶端的輸出流對(duì)象
        PrintStream ps = new PrintStream(socket.getOutputStream());
        String line = null;
        while ((line = keyin.readLine()) != null){
            ps.println(line);
        }


    }
}
實(shí)現(xiàn)子線程锻离,用于接收服務(wù)器端或客戶端的數(shù)據(jù):
/**
 * 創(chuàng)建子線程處理客戶端接收服務(wù)器端的數(shù)據(jù)
 */
class ClientThread implements Runnable{
    private Socket socket;
    //保存操作的socket 對(duì)象
    public ClientThread(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run() {
        BufferedReader bufferedReader = null;
        try {
            //獲取輸入
            bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            //讀取
            String line = null;
            while ((line = bufferedReader.readLine()) != null){
                System.out.println(line);
            }
        } catch (IOException e) {
            System.out.println("網(wǎng)絡(luò)出錯(cuò)  請(qǐng)重新登錄");
            System.exit(-1);
        }finally {
            try {
                if (bufferedReader != null) {
                    bufferedReader.close();
                }
                if (socket != null) {
                    socket.close();
                }
            }catch (IOException e) {
                e.printStackTrace();
            }

        }
    }
}
/**
 * 創(chuàng)建一個(gè)子線程處理服務(wù)器端接收客戶端的數(shù)據(jù)
 */
class ServerThread extends Thread{
    private Socket socket;

    public ServerThread(Socket socket){
        this.socket = socket;
    }

    @Override
    public void run() {
        BufferedReader br = null;
        try {
             br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            //讀取數(shù)據(jù)
            String line = null;
            while ((line = br.readLine()) != null){
                System.out.println(line);
            }
        } catch (IOException e) {
            System.out.println("網(wǎng)絡(luò)異常 請(qǐng)重新登錄");
            System.exit(-1);
        }finally {
            //
            //
            try{
                if(br != null){
                    br.close();
                }
                if(socket != null){
                    socket.close();
                }
            }catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

5..如何實(shí)現(xiàn)群聊

重點(diǎn)思想:在服務(wù)器端維護(hù)一個(gè)數(shù)組(socket)

實(shí)現(xiàn)服務(wù)器端:
class Server{
    //保存每一個(gè)來(lái)連接的socket對(duì)象
    public static ArrayList<Socket> sockets = new ArrayList<>();
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(9999);

        //不停地等待客戶端來(lái)連接
        while (true){
            Socket socket = serverSocket.accept();
            //保存每一個(gè)客戶端socket
            sockets.add(socket);

            //開(kāi)啟一個(gè)線程處理每一個(gè)客戶端的輸出
            new ServerThread(socket).start();
        }
    }
}
實(shí)現(xiàn)Server接收每個(gè)客戶端數(shù)據(jù)傳輸:
/**
 * 創(chuàng)建一個(gè)子線程處理服務(wù)器端接收客戶端的數(shù)據(jù)
 */
class ServerThread extends Thread{
    private Socket socket;

    public ServerThread(Socket socket){
        this.socket = socket;
    }

    @Override
    public void run() {
        BufferedReader br = null;

        try {
            br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            //讀取數(shù)據(jù)
            String line = null;
            while ((line = br.readLine()) != null){
                //群發(fā)消息
                //遍歷Socket維護(hù)的數(shù)組
                for(Socket s : Server.sockets){
                    //向socket對(duì)應(yīng)的客戶端發(fā)送消息
                    PrintStream ps = new PrintStream(s.getOutputStream());
                    ps.println(line);
                }
            }
        } catch (IOException e) {
            System.out.println("網(wǎng)絡(luò)異常 請(qǐng)重新登錄");
            System.exit(-1);
        }finally {
            //
            //
            try{
                if(br != null){
                    br.close();
                }
                if(socket != null){
                    socket.close();
                }
            }catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
客戶端實(shí)現(xiàn)與對(duì)聊的代碼一樣:
class Client{
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("10.129.28.253",6666);

        //用一個(gè)子線程處理服務(wù)器端數(shù)據(jù)
        new Thread(new ClientThread(socket)).start();

        //主線程處理終端輸入 發(fā)送給服務(wù)器端
        BufferedReader keyin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintStream ps = new PrintStream(socket.getOutputStream());
        String line = null;
        while ((line = keyin.readLine()) != null){
            ps.println(line);
        }

    }
}

/**
 * 創(chuàng)建子線程處理客戶端接收服務(wù)器端的數(shù)據(jù)
 */
class ClientThread implements Runnable{
    private Socket socket;

    public ClientThread(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run() {
        BufferedReader br = null;
        try {
            //獲取服務(wù)器端的輸入流對(duì)象
            br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            //讀取數(shù)據(jù)
            String line = null;
            while ((line = br.readLine()) != null){
                System.out.println(line);
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try{
                if(br != null){
                    br.close();
                }
                if(socket != null){
                    socket.close();
                }
            }catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

心得:

今天循環(huán)寫(xiě)差不多的代碼铺峭。頭都搞暈了,晚自習(xí)時(shí)是在沒(méi)精神啊纳账,但效果真的不錯(cuò)逛薇,復(fù)習(xí)時(shí)輕輕松松,因?yàn)槎加杏∠蟆?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疏虫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卧秘,老刑警劉巖呢袱,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異翅敌,居然都是意外死亡羞福,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)蚯涮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)治专,“玉大人,你說(shuō)我怎么就攤上這事遭顶≌欧澹” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵棒旗,是天一觀的道長(zhǎng)喘批。 經(jīng)常有香客問(wèn)我,道長(zhǎng)铣揉,這世上最難降的妖魔是什么饶深? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮逛拱,結(jié)果婚禮上敌厘,老公的妹妹穿的比我還像新娘。我一直安慰自己朽合,他們只是感情好额湘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著旁舰,像睡著了一般锋华。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上箭窜,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天毯焕,我揣著相機(jī)與錄音,去河邊找鬼磺樱。 笑死纳猫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的竹捉。 我是一名探鬼主播芜辕,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼块差!你這毒婦竟也來(lái)了侵续?” 一聲冷哼從身側(cè)響起倔丈,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎状蜗,沒(méi)想到半個(gè)月后需五,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轧坎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年宏邮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缸血。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜜氨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捎泻,到底是詐尸還是另有隱情飒炎,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布族扰,位于F島的核電站厌丑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏渔呵。R本人自食惡果不足惜怒竿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扩氢。 院中可真熱鬧耕驰,春花似錦、人聲如沸录豺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)双饥。三九已至媒抠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咏花,已是汗流浹背趴生。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昏翰,地道東北人苍匆。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像棚菊,于是被迫代替她去往敵國(guó)和親浸踩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 計(jì)算機(jī)網(wǎng)絡(luò)概述 網(wǎng)絡(luò)編程的實(shí)質(zhì)就是兩個(gè)(或多個(gè))設(shè)備(例如計(jì)算機(jī))之間的數(shù)據(jù)傳輸统求。 按照計(jì)算機(jī)網(wǎng)絡(luò)的定義检碗,通過(guò)一定...
    蛋炒飯_By閱讀 1,215評(píng)論 0 10
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 10,934評(píng)論 6 13
  • 1.網(wǎng)絡(luò)編程1.1計(jì)算機(jī)網(wǎng)絡(luò)概述網(wǎng)絡(luò)編程的實(shí)質(zhì)就是兩個(gè)(或多個(gè))設(shè)備(例如計(jì)算機(jī))之間的數(shù)據(jù)傳輸据块。按照計(jì)算機(jī)網(wǎng)絡(luò)的...
    任振銘閱讀 423評(píng)論 0 1
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,093評(píng)論 1 32
  • 6.1 公鑰密鑰加密原理 6.1.1 基礎(chǔ)知識(shí) 密鑰:一般就是一個(gè)字符串或數(shù)字,在加密或者解密時(shí)傳遞給加密/解密算...
    AndroidMaster閱讀 4,006評(píng)論 1 8