付費(fèi)下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】詳解Android基于TCP和UDP協(xié)議的Socket通信
本來想講一下基礎(chǔ)的網(wǎng)絡(luò)通信方面的知識(shí)點(diǎn),發(fā)現(xiàn)太枯燥乏味了,不過筆試中也經(jīng)常會(huì)問到這方面的問題,所以關(guān)于通信方面的知識(shí)點(diǎn),在下會(huì)放到面試中去,因?yàn)閷?shí)戰(zhàn)中也就面試會(huì)用到這方面知識(shí)點(diǎn)Android與服務(wù)器的通信方式主要有兩種,一是Http通信,一是Socket通信。兩者的最大差異在于,http連接使用的是“請(qǐng)求—響應(yīng)方式”,即在請(qǐng)求時(shí)建立連接通道,當(dāng)客戶端向服務(wù)器發(fā)送請(qǐng)求后,服務(wù)器端才能向客戶端返回?cái)?shù)據(jù)。
而Socket通信中基于TCP/IP協(xié)議的通信則是在雙方建立起連接后就可以直接進(jìn)行數(shù)據(jù)的傳輸,在連接時(shí)可實(shí)現(xiàn)信息的主動(dòng)推送,而不需要每次由客戶端想服務(wù)器發(fā)送請(qǐng)求。而UDP則是提供無連接的數(shù)據(jù)報(bào)服務(wù),UDP在發(fā)送數(shù)據(jù)報(bào)前不需建立連接,不對(duì)數(shù)據(jù)報(bào)進(jìn)行檢查即可發(fā)送數(shù)據(jù)包1.什么是Socket?2.Socket通信模型:Socket通信實(shí)現(xiàn)步驟解析:Step1:創(chuàng)建ServerSocket和SocketStep2:打開連接到的Socket的輸入/輸出流Step3:按照協(xié)議對(duì)Socket進(jìn)行讀/寫操作Step4:關(guān)閉輸入輸出流,以及Socket好的,我們接下來寫一個(gè)簡(jiǎn)單的例子,開啟服務(wù)端后,客戶端點(diǎn)擊按鈕然后鏈接服務(wù)端,并向服務(wù)端發(fā)送一串字符串,表示通過Socket鏈接上服務(wù)器~一、1.基于TCPSocket服務(wù)端的編寫:服務(wù)端要做的事有這些:Step1:創(chuàng)建ServerSocket對(duì)象,綁定監(jiān)聽的端口Step2:調(diào)用accept()方法監(jiān)聽客戶端的請(qǐng)求Step3:連接建立后,通過輸入流讀取客戶端發(fā)送的請(qǐng)求信息Step4:通過輸出流向客戶端發(fā)送響應(yīng)信息Step5:關(guān)閉相關(guān)資源代碼實(shí)現(xiàn):創(chuàng)建一個(gè)Java項(xiàng)目,然后把Java代碼貼進(jìn)去即可!這里可以用eclipse來寫服務(wù)端,as來寫安卓端然后我們把代碼run起來,控制臺(tái)會(huì)打?。汉玫?,接下來到Android客戶端了!2.Socket客戶端的編寫:客戶端要做的事有這些:Step1:創(chuàng)建Socket對(duì)象,指明需要鏈接的服務(wù)器的地址和端號(hào)Step2:鏈接建立后,通過輸出流向服務(wù)器發(fā)送請(qǐng)求信息Step3:通過輸出流獲取服務(wù)器響應(yīng)的信息Step4:關(guān)閉相關(guān)資源代碼實(shí)現(xiàn):MainActivity.java:因?yàn)锳ndroid不允許在主線程(UI線程)中做網(wǎng)絡(luò)操作,所以這里需要我們自己另開一個(gè)線程來連接Socket!運(yùn)行結(jié)果:點(diǎn)擊按鈕后,服務(wù)端控制臺(tái)打?。?.簡(jiǎn)易聊天室那么通過上面的案例,我們就可以做一個(gè)簡(jiǎn)單的聊天軟件,這里知道怎么實(shí)現(xiàn)的就可以了,實(shí)戰(zhàn)中我們都是采用的第三方API,比如網(wǎng)易云,我會(huì)專門寫一個(gè)網(wǎng)易云的IM通信實(shí)現(xiàn)的效果圖:先把我們的服務(wù)端跑起來:接著把我們的程序分別跑到兩臺(tái)模擬器上:接下來我們來寫代碼:首先是服務(wù)端,就是將讀寫socket的操作放到自定義線程當(dāng)中,創(chuàng)建ServerSocket后,循環(huán)調(diào)用accept方法,當(dāng)有新客戶端接入,將socket加入集合當(dāng)中,同時(shí)在線程池新建一個(gè)線程!另外,在讀取信息的方法中,對(duì)輸入字符串進(jìn)行判斷,如果為bye字符串,將socket從集合中移除,然后close掉!接著到客戶端,客戶端的難點(diǎn)在于要另外開辟線程的問題,因?yàn)锳ndroid不允許直接在主線程中做網(wǎng)絡(luò)操作,而且不允許在主線程外的線程操作UI,這里的做法是自己新建一個(gè)線程,以及通過Hanlder來更新UI,實(shí)際開發(fā)不建議直接這樣做?。?!布局文件:activity_main.xml:MainActivity.java:二、基于UDP協(xié)議的Socket通信TCP和UDP最大的區(qū)別在于是否需要客戶端與服務(wù)端建立連接后才能進(jìn)行數(shù)據(jù)傳輸,TCP:傳輸前先開服務(wù)端,accept,等客戶端接入,然后獲得客戶端socket然后進(jìn)行IO操作,而UDP則不用UDP:以數(shù)據(jù)報(bào)作為數(shù)據(jù)的傳輸載體,在進(jìn)行傳輸時(shí)首先要把傳輸?shù)臄?shù)據(jù)定義成數(shù)據(jù)報(bào)(Datagram),在數(shù)據(jù)報(bào)中指明數(shù)據(jù)要到達(dá)的Socket(主機(jī)地址和端口號(hào)),然后再將數(shù)據(jù)以數(shù)據(jù)報(bào)的形式發(fā)送出去1.服務(wù)端實(shí)現(xiàn)步驟:Step1:創(chuàng)建DatagramSocket,指定端口號(hào)Step2:創(chuàng)建DatagramPacketStep3:接收客戶端發(fā)送的數(shù)據(jù)信息Step4:讀取數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 10895-2025離心機(jī)、分離機(jī)機(jī)械振動(dòng)測(cè)試與評(píng)價(jià)
- 農(nóng)村信用社招聘試題附答案
- 醫(yī)院崗前培訓(xùn)考試及答案
- 車間安全培訓(xùn)試題附參考答案(完整版)
- 吉林省延吉市公開遴選公務(wù)員筆試題及答案解析(A類)
- 人力資源職稱試題及答案
- 醫(yī)護(hù)論文試題及答案
- 金融知識(shí)多項(xiàng)選擇題試題(附答案)
- 《計(jì)算機(jī)應(yīng)用基礎(chǔ)》各章習(xí)題參考答案
- 高頻教務(wù)小組面試題及答案
- 安全生產(chǎn)目標(biāo)及考核制度
- (2026版)患者十大安全目標(biāo)(2篇)
- 大數(shù)據(jù)安全技術(shù)與管理
- 《陸上風(fēng)電場(chǎng)工程概算定額》NBT 31010-2019
- 七年級(jí)下冊(cè)《6.1 第3課時(shí) 平方根》課件
- 一年級(jí)至六年級(jí)英語(yǔ)單詞匯總
- 矩形容器計(jì)算(ABCDE型通用)V1.1
- GB/T 13789-2022用單片測(cè)試儀測(cè)量電工鋼帶(片)磁性能的方法
- GB/T 33092-2016皮帶運(yùn)輸機(jī)清掃器聚氨酯刮刀
- GB/T 16535-2008精細(xì)陶瓷線熱膨脹系數(shù)試驗(yàn)方法頂桿法
- 中學(xué)主題班會(huì)課:期末考試應(yīng)試技巧點(diǎn)撥(共34張PPT)
評(píng)論
0/150
提交評(píng)論