android網(wǎng)絡(luò)編程 基于socket 的通信

android網(wǎng)絡(luò)編程 基于socket 的通信

ID:6070615

大?。?31.00 KB

頁(yè)數(shù):10頁(yè)

時(shí)間:2018-01-02

android網(wǎng)絡(luò)編程 基于socket 的通信_(tái)第1頁(yè)
android網(wǎng)絡(luò)編程 基于socket 的通信_(tái)第2頁(yè)
android網(wǎng)絡(luò)編程 基于socket 的通信_(tái)第3頁(yè)
android網(wǎng)絡(luò)編程 基于socket 的通信_(tái)第4頁(yè)
android網(wǎng)絡(luò)編程 基于socket 的通信_(tái)第5頁(yè)
資源描述:

《android網(wǎng)絡(luò)編程 基于socket 的通信》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。

1、Android網(wǎng)絡(luò)編程實(shí)踐之旅(二):基于Socket的網(wǎng)絡(luò)通信???????Socket(套接字)是一種通信機(jī)制,可以實(shí)現(xiàn)單機(jī)或跨網(wǎng)絡(luò)進(jìn)行通信,其創(chuàng)建需要明確的區(qū)分C(客戶(hù)端)/S(服務(wù)器端),支持多個(gè)客戶(hù)端連接到同一個(gè)服務(wù)器。有兩種傳輸模式:1)、面向連接的傳輸:基于TCP協(xié)議,可靠性高,但效率低;2)、面向無(wú)連接的傳輸:基于UDP協(xié)議,可靠性低,但效率高;???????Android中,直接采用Socket通信應(yīng)該是我們遇到的最低級(jí)的網(wǎng)絡(luò)運(yùn)用。盡管已經(jīng)作了很大程度的抽象,但是純粹的Socket通信,仍然給開(kāi)發(fā)者留下

2、很多細(xì)節(jié)需要處理,尤其在服務(wù)器端,開(kāi)發(fā)者需要處理多線程以及數(shù)據(jù)緩沖等的設(shè)計(jì)問(wèn)題。相對(duì)而言,處于更高抽象層的HTTP等,已經(jīng)對(duì)Socket通信中需要處理的技術(shù)細(xì)節(jié)進(jìn)行了很好的封裝,開(kāi)發(fā)者無(wú)須關(guān)心,因此,HTTP在網(wǎng)絡(luò)開(kāi)發(fā)中通常具有決定性的優(yōu)勢(shì)。???????Android在其核心庫(kù)的java包中,提供了用于客戶(hù)端的Socketclass和用于服務(wù)器端的ServerSocketclass,分別位于$SOURCE/libcore/luni/src/main/java/java/net/Socket.java和$SOURCE/l

3、ibcore/luni/src/main/java/java/net/ServerSocket.java文件中。分析兩個(gè)class的源碼,可以看出封裝考慮的很全面,只構(gòu)造方法一向每個(gè)class都考慮了很多種使用情況。由于本人只是初學(xué)者,很多理解的不深入,這里只拋磚引玉的對(duì)兩個(gè)class的構(gòu)造方法分別介紹一種,就是我下面的程序中用到的:Socket(StringdstName,intdstPort):創(chuàng)建一個(gè)以流的方式(基于TCP協(xié)議)連接到目標(biāo)機(jī)(這里可以理解為服務(wù)器)的客戶(hù)端Socket;dstName是目標(biāo)機(jī)的IP地

4、址,dstPort是要連接的目標(biāo)機(jī)的端?口號(hào)。這里要注意對(duì)端口的理解,它不能理解為物理上的一個(gè)接口,而是對(duì)計(jì)算機(jī)中一塊特殊內(nèi)存區(qū)域的形象表述。ServerSocket(intaport):創(chuàng)建一個(gè)綁定到本機(jī)指定端口的服務(wù)端Socket;aport就是指定的本機(jī)端口。與上述客戶(hù)端Socket對(duì)應(yīng),通過(guò)TCP連接時(shí),ServerSocket創(chuàng)建后需要在aport端口上進(jìn)行監(jiān)聽(tīng),等待客戶(hù)端的連接。???????上面所寫(xiě)都是些背景知識(shí),下面對(duì)本人的編程實(shí)踐進(jìn)行詳細(xì)說(shuō)明。1、功能描述????1)、簡(jiǎn)單的基于Socket的數(shù)據(jù)通信;

5、????2)、采用TCP方式連接;????3)、采用C/S結(jié)構(gòu),但服務(wù)端只支持一個(gè)連接;????4)、客戶(hù)端能夠向服務(wù)端發(fā)送數(shù)據(jù),并顯示服務(wù)端的返回信息;????5)、服務(wù)端能夠接收客戶(hù)端的數(shù)據(jù),并將收到的數(shù)據(jù)以特定的方式返回給客戶(hù)端;2、程序?qū)崿F(xiàn)思路???1)、服務(wù)端:設(shè)計(jì)為在后臺(tái)執(zhí)行的service,用一個(gè)獨(dú)立的線程來(lái)處理客戶(hù)端的連接請(qǐng)求、數(shù)據(jù)接收和返回。為了啟動(dòng)該service,編寫(xiě)個(gè)簡(jiǎn)單的Activity。???2)、客戶(hù)端:設(shè)計(jì)為一個(gè)Activity,界面由三部分組成:顯示服務(wù)端返回信息的文本區(qū)域(一個(gè)文本框)

6、;進(jìn)行數(shù)據(jù)輸入的編輯區(qū)域(一個(gè)編輯框);以及觸發(fā)連接請(qǐng)求并執(zhí)行數(shù)據(jù)發(fā)送的觸發(fā)區(qū)域(一個(gè)按鈕)。3、服務(wù)端源程序???1)、Activity文件SocketServerDemo.javaviewplaincopytoclipboardprint?1.package?com.android.sample.SocketServerDemo;??2.??3.import?android.app.Activity;??4.import?android.content.Intent;??5.import?android.os.Bun

7、dle;??6.??7.public?class?SocketServerDemo?extends?Activity{??8.??9.????@Override??10.????protected?void?onCreate(Bundle?savedInstanceState)?{??11.????????//?TODO?Auto-generated?method?stub??12.????????super.onCreate(savedInstanceState);??13.??????????1.????????se

8、tContentView(R.layout.main);??2.??????????3.????????System.out.println("begin?start?service");???4.????????this.startService(new?Intent(this,?SocketService.cla

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。