




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
-1-了解Android中網(wǎng)絡通信的的方式理解Socket、ServerSocket原理及常用方法掌握使用Socket和ServerSocket進行網(wǎng)絡通信掌握HttpURLConnection的使用掌握HttpClient的使用熟悉WebKit的組成及原理掌握使用WebView組件瀏覽網(wǎng)頁本章目標-2-網(wǎng)絡通信網(wǎng)絡通信包含三部分內(nèi)容:發(fā)送方、接收方以及協(xié)議棧發(fā)送方和接收方是參與通信的主體協(xié)議棧是發(fā)送方和接收方進行通信的規(guī)約按照服務類型,網(wǎng)絡通信可分為面向連接和無連接的方式面向連接是在通信前建立通信鏈路,而通信結(jié)束后釋放該鏈路無連接的方式則不需要在通信前建立通信連接,這種方式不保證傳輸?shù)馁|(zhì)量Android中常用的網(wǎng)絡編程方式如下 針對TCP/IP協(xié)議,使用Socket和ServerSocket針對HTTP協(xié)議,如HttpURLConnection和HttpClient;直接使用WebKit訪問網(wǎng)絡注意:
Android中所有訪問網(wǎng)絡的操作必須在新的線程中執(zhí)行,不能直接在主線程(UI線程)中執(zhí)行不能在主線程之外的其他線程更新UI,可以通過Handler來更新UI。-3-Socket通信Socket通信是指雙方采用Socket機制交換數(shù)據(jù)TCP協(xié)議是可靠的、面向連接的協(xié)議,這種方式需要在通信前建立通信雙方的連接鏈路,而通信結(jié)束后又釋放該鏈路UDP數(shù)據(jù)報協(xié)議是不可靠的、無連接的協(xié)議,這種協(xié)議不需要在通信前建立通信雙方的連接。因而UDP使用可靠性來換取傳輸開銷,其傳輸開銷比TCP小包中提供了兩個Socket類 Socket是客戶端的Socket對應的類ServerSocket是服務器端的Socket對應的類,這個類表示一個等待客戶端連接的服務器端套接字Socket-4-Socket的方法功能描述Socket(Stringhost,intport)Socket提供7個構造函數(shù)。該構造函數(shù)用于創(chuàng)建一個到主機host、端口號為port的套接字,并連接到遠程主機bind(SocketAddresslocalAddr)將該Scoket同參數(shù)localAddr指定的地址和端口綁定InetAddressgetInetAddress()獲取該Socket連接的目標主機的IP地址synchronizedintgetReceiveBufferSize()獲取該Socket的接受緩沖區(qū)的尺寸synchronizedvoidclose()關閉SocketInputStreamgetInputStream()獲取該Scoket的輸入流,這個輸入流用來讀取數(shù)據(jù)booleanisConnected()判斷該Socket是否連接booleanisOutputShutdown()判斷該Socket的輸出管道是否關閉booleanisInputShutdown()判斷該Socket的輸入管道是否關閉SocketAddressgetLocalSocketAddress()獲取此Socket的本地地址和端口intgetPort()獲取端口號Socket工作步驟:根據(jù)指定地址和端口創(chuàng)建一個Socket對象。調(diào)用getInputStream()方法或getOutputStream()方法打開連接到Socket的輸入/出流??蛻舳伺c服務器根據(jù)一定的協(xié)議交互,直到關閉連接。關閉客戶端的Socket。try{ //是TCP/IP協(xié)議中默認的本機地址
Socketsocket=newSocket("",9898);}catch(IOExceptionioe){ System.out.println("Error:"+ioe);}catch(UnknownHostExceptionuhe){ System.out.println("Error:"+uhe);}ServerSocket-5-ServerSocket的方法功能描述ServerSocket(intport)ServerSocket構造函數(shù)Socketaccept()等待客戶端的連接,當客戶端請求連接時,返回一個Socketvoidclose()關閉服務器SocketSocketAddressgetLocalSocketAddress()獲取此Socket的本地地址和端口intgetLocalPort()獲取端口號InetAddressgetInetAddress()獲取該Socket的IP地址booleanisClosed()判斷連接是否關閉voidsetSoTimeout(inttimeout)設置accpet的超時時間ServerSocket工作步驟:根據(jù)指定端口創(chuàng)建一個新的ServerSocket對象。調(diào)用ServerSocket的accept()方法,在指定的端口監(jiān)聽到來的連接。accept()一直處于阻塞狀態(tài),直到有客戶端試圖建立連接。這時accept()方法返回連接客戶端與服務器的Socket對象。調(diào)用getInputStream()方法或getOutputStream()方法建立與客戶端交互的輸入/輸出流。服務器與客戶端根據(jù)一定的協(xié)議交互,直到關閉連接。關閉服務器端的Socket。回到第2步,繼續(xù)監(jiān)聽下一次的連接。ServerSocketserver=null;try{ //創(chuàng)建一個ServerSocket在端口9898監(jiān)聽客戶請求
server=newServerSocket(9898);}catch(IOExceptione){ System.out.println("cannotlistento:"+e);}Socketsocket=null;try{ //accept()是一個阻塞方法,一旦有客戶請求,
//它就會返回一個Socket對象用于同客戶進行交互
socket=server.accept();}catch(IOExceptione){ System.out.println("Error:"+e);}描述7.1-6-HTTP編程HTTP協(xié)議是Internet上使用最為廣泛的通信協(xié)議Android中針對HTTP進行網(wǎng)絡通信有以下兩種HttpURLConnectionApacheHTTP客戶端組件HttpClient-7-方法功能描述InputStreamgetInputStream()返回從此打開的連接讀取的輸入流OutputStreamgetOutputStream()返回寫入到此連接的輸出流StringgetRequestMethod()獲取請求方法intgetResponseCode()獲取狀態(tài)碼,如HTTP_OK、HTTP_UNAUTHORIZEDvoidsetRequestMethod(Stringmethod)設置URL請求的方法voidsetDoInput(booleandoinput)設置輸入流,如果使用URL連接進行輸入,則將DoInput標志設置為true(默認值);如果不打算使用,則設置為falsevoidsetDoOutput(booleandooutput)設置輸出流,如果使用URL連接進行輸出,則將DoOutput標志設置為true;如果不打算使用,則設置為false(默認值)voidsetUseCaches(booleanusecaches)設置連接是否使用任何可用的緩存voiddisconnect()關閉連接HttpURLConnection//創(chuàng)建URLURLurl=newURL("/");//獲取HttpURLConnection連接HttpURLConnectionurlConn=(HttpURLConnection)url.openConnection();//設置輸出、輸入流urlConn.setDoOutput(true);urlConn.setDoInput(true);//設置方式為POSTurlConn.setRequestMethod("POST");//請求不能使用緩存urlConn.setUseCaches(false);urlConn.disconnect();描述7.2-8-HttpClientApache提供了HTTP客戶端組件HttpClient,它對中的類進行封裝和抽象,更適合在Android上開發(fā)網(wǎng)絡應用,使得針對HTTP編程更加方便、高效//使用DefaultHttpClient生成一個HttpClient對象HttpClienthttpclient=newDefaultHttpClient();//定義一個URL地址Stringuri="http://test/";//定義一個以Get方式提交的HttpGet請求對象HttpGethttpget=newHttpGet(uri);//執(zhí)行HttpClient對象的execute()方法,即將請求對象提交給服務器,//并返回一個響應對象HttpResponsehttpesponse=httpclient.execute(httpget);//獲取響應信息HttpEntityhttpentity=httpresponse.getEntity();......描述7.3-9-WebKit在Android平臺中,WebKit引擎可分為兩個部分:Java引擎使用JavaScript實現(xiàn),該引擎負責與Android應用程序進行通信;WebCore引擎庫負責處理實際的網(wǎng)頁生成與版面元素。-10-方法功能描述loadUrl()打開一個指定的Web資源頁面loadData()顯示HTML格式的網(wǎng)頁內(nèi)容getSettings()獲取WebView的設置對象addJavascriptInterface()將一個對象添加到JavaScript的全局對象window中clearCache()清除緩存destory()銷毀WebViewWebViewWebView是WebKit中專門用來瀏覽網(wǎng)頁的視圖組件,它作為應用程序的UI接口,為用戶提供了一系列的網(wǎng)頁瀏覽、用戶交互接口,通過這些接口顯示和處理請求的網(wǎng)絡資源功能強大,支持CSS、JavaScript和HTML,并很好的融入布局,使頁面更加美觀;能夠?qū)g覽器控件進行詳細的設置,例如字體、背景顏色、滾動條樣式;能夠捕捉到所有瀏覽器操作,例如點擊、打開或關閉URL。-11-WebView示例<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android" android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent"> <WebViewandroid:id="@+id/mywebview"android:layout_width="fill_parent" android:layout_height="fill_parent"/></LinearLayout><uses-permissionandroid:name="android.permission.INTERNET"></uses-permission>publicclassWebViewActivityextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); WebViewwebView=(WebView)findViewById(R.id.mywebview); Stringurl=""; webView.loadUrl(url); }}Stringhtml="";html+="<html>";html+="<body>";html+="<ahref=>BaiduHome</a>";html+="</body>";html+="</html>";webView.loadData(html,"text/html","utf-8");-12-小結(jié):Socket通常也稱作“套接字”,這個套接字用來描述通信鏈的句柄:IP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 名義股東入股協(xié)議書
- 貨場搬運協(xié)議書范本
- 物品領取寄存協(xié)議書
- 詳細參見技術協(xié)議書
- 學生頂崗管理協(xié)議書
- 同意安裝暖氣協(xié)議書
- 私人安裝門窗協(xié)議書
- 景觀樓梯購買協(xié)議書
- 水泥授權代理協(xié)議書
- 刑事和解協(xié)議書公司
- GB/T 11982.2-2015聚氯乙烯卷材地板第2部分:同質(zhì)聚氯乙烯卷材地板
- 110KV 線路保護調(diào)試報告
- 移動設備小型設備施工方案
- 臨床思維診療訓練系統(tǒng)參數(shù)
- 揚州市巡游出租汽車駕駛員從業(yè)資格區(qū)域科目考試題庫(含答案)
- DB37-T 3466-2018人民防空工程防護(化)設備維護保養(yǎng)規(guī)程
- (完整版)建筑構造課件
- 《巖石力學(含實驗)》課程教學大綱
- 中國銀行保函業(yè)務培訓(共71頁).ppt
- 廣東公共就業(yè)服務標準化手冊
- 全國油料高產(chǎn)創(chuàng)建測產(chǎn)驗收辦法
評論
0/150
提交評論