Android socket實(shí)現(xiàn)原理詳解 服務(wù)端和客戶端如何搭建
本文實(shí)例為大家分享了Android socket的實(shí)現(xiàn)原理,供大家參考,具體內(nèi)容如下
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í)有所幫助,也希望大家多多支持腳本之家。
- Android Socket通信詳解
- Android編程之客戶端通過socket與服務(wù)器通信的方法
- Android中Socket通信的實(shí)現(xiàn)方法概述
- Android中使用WebSocket實(shí)現(xiàn)群聊和消息推送功能(不使用WebView)
- Android NDK中socket的用法以及注意事項(xiàng)分析
- python服務(wù)器與android客戶端socket通信實(shí)例
- android開發(fā)socket編程之udp發(fā)送實(shí)例分析
- Android中使用socket通信實(shí)現(xiàn)消息推送的方法詳解
- Android使用socket創(chuàng)建簡單TCP連接的方法
- Android編程實(shí)現(xiàn)基于局域網(wǎng)udp廣播自動(dòng)建立socket連接的方法
相關(guān)文章
Android 數(shù)據(jù)存儲(chǔ)方式有哪幾種
android為數(shù)據(jù)存儲(chǔ)提供了五種方式,有SharedPreferences、文件存儲(chǔ)、SQLite數(shù)據(jù)庫、ContentProvider、網(wǎng)絡(luò)存儲(chǔ),對(duì)android數(shù)據(jù)存儲(chǔ)方式感興趣的朋友可以通過本文學(xué)習(xí)一下2015-11-11
Mono for Android 實(shí)現(xiàn)高效的導(dǎo)航(Effective Navigation)
Android 4.0 系統(tǒng)定義了一系列的高效導(dǎo)航方式 (Effective Navigation), 主要包括標(biāo)簽、下拉列表、以及向上和返回等, 本文介紹如何用 Mono for Android 實(shí)現(xiàn)這些的導(dǎo)航方式2012-12-12
Android模仿實(shí)現(xiàn)閑魚首頁的思路與方法
這篇文章主要給大家介紹了Android模仿實(shí)現(xiàn)閑魚首頁的思路與方法,文中通過示例代碼介紹的非常詳細(xì),并在文末給出了完整的代碼供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。2017-04-04
android閱讀器長按選擇文字功能實(shí)現(xiàn)代碼
本篇文章主要介紹了android閱讀器長按選擇文字功能實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07
Android自定義View繪圖實(shí)現(xiàn)漸隱動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了Android自定義View繪圖實(shí)現(xiàn)漸隱動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09

