Androidsocket實(shí)現(xiàn)原理詳解服務(wù)端和客戶端如何搭建

本文實(shí)例為大家分享了Android socket的實(shí)現(xiàn)原理,供大家參考,具體內(nèi)容如下

目前創(chuàng)新互聯(lián)已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、友誼網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

Socket套接字

是網(wǎng)絡(luò)上具有唯一標(biāo)識(shí)的IP地址和端口號(hào)組合在一起才能構(gòu)成唯一能識(shí)別的標(biāo)識(shí)符套接字。

socket實(shí)現(xiàn)的原理機(jī)制:

1、通信的兩端都有Socket

2、網(wǎng)絡(luò)通信其實(shí)就是Socket間的通信

3、數(shù)據(jù)在兩個(gè)Socket間通過IO傳輸

建立Socket(客戶端)和ServerSocket(服務(wù)器端)

建立連接后,通過Socket中的IO流進(jìn)行數(shù)據(jù)的傳輸

關(guān)閉socket

同樣,客戶端與服務(wù)器端是兩個(gè)獨(dú)立的應(yīng)用程序。

服務(wù)器端思路

1、建立服務(wù)器端的socket服務(wù),需要一個(gè)端口
2、服務(wù)端沒有直接的操作,而是通過accept方法獲取客戶端對(duì)象,在通過獲取到的客戶端對(duì)象的流和客戶端進(jìn)行通信
3、通過客戶端獲取流對(duì)象的方法,讀取數(shù)據(jù)或者寫入數(shù)據(jù)
4、如果服務(wù)完成,需要關(guān)閉客戶端,然后關(guān)閉服務(wù)器,但是,一般會(huì)關(guān)閉客戶端,不會(huì)關(guān)閉服務(wù)器,因?yàn)榉?wù)端是一直提供服務(wù)的

服務(wù)端實(shí)現(xiàn)代碼

// 創(chuàng)建服務(wù)器端
    ServerSocket server = new ServerSocket(5555);

    while(true){
    // 等待連接
    Socket accept = server.accept();

    OutputStream outputStream = accept.getOutputStream();
    outputStream.write("你好,我是服務(wù)器!\r\n".getBytes());
    outputStream.flush();

    // 讀取數(shù)據(jù)
    InputStream inputStream = accept.getInputStream();

    BufferedReader reader = new BufferedReader(new InputStreamReader(
        inputStream));
    System.out.println("服務(wù)器:" + reader.readLine());

     outputStream.close();
     inputStream.close();
    }


客戶端思路

1、建立客戶端的Socket服務(wù),并明確要連接的服務(wù)器。
2、如果連接建立成功,就表明,已經(jīng)建立了數(shù)據(jù)傳輸?shù)耐ǖ?就可以在該通道通過IO進(jìn)行數(shù)據(jù)的讀取和寫入.該通道稱為Socket流,Socket流中既有讀取流,也有寫入流.
3、通過Socket對(duì)象的方法,可以獲取這兩個(gè)流
4、通過流的對(duì)象可以對(duì)數(shù)據(jù)進(jìn)行傳輸
5、如果傳輸數(shù)據(jù)完畢,關(guān)閉資源

客戶端實(shí)現(xiàn)代碼

 //創(chuàng)建套接字 確定要連接的服務(wù)器ip與端口口
    Socket socket=new Socket("172.17.23.77",5555);


    InputStream inputStream = socket.getInputStream();
    BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
    String readLine = br.readLine();
    System.out.println("客戶端:"+readLine);

    //向服務(wù)器發(fā)送消息
    OutputStream outputStream = socket.getOutputStream();
    outputStream.write("你好\r\n".getBytes());
    outputStream.flush();

    outputStream.close();
    inputStream.close();

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

當(dāng)前文章:Androidsocket實(shí)現(xiàn)原理詳解服務(wù)端和客戶端如何搭建
文章路徑:http://muchs.cn/article0/pgdhoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)網(wǎng)站改版、外貿(mào)建站網(wǎng)站營銷、搜索引擎優(yōu)化、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)