第八章 網(wǎng)絡(luò)與數(shù)據(jù)通信技術(shù)_第1頁(yè)
第八章 網(wǎng)絡(luò)與數(shù)據(jù)通信技術(shù)_第2頁(yè)
第八章 網(wǎng)絡(luò)與數(shù)據(jù)通信技術(shù)_第3頁(yè)
第八章 網(wǎng)絡(luò)與數(shù)據(jù)通信技術(shù)_第4頁(yè)
第八章 網(wǎng)絡(luò)與數(shù)據(jù)通信技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第八章網(wǎng)絡(luò)與數(shù)據(jù)通信技術(shù)俞成海教學(xué)任務(wù)與目標(biāo)教學(xué)任務(wù)USB編程Wi-Fi編程藍(lán)牙編程Socket實(shí)現(xiàn)技術(shù)HTTP協(xié)議通信實(shí)現(xiàn)技術(shù)教學(xué)重點(diǎn)藍(lán)牙編程Socket實(shí)現(xiàn)技術(shù)USB編程兩種模式來(lái)支持AndroidUSB外設(shè):USB

外設(shè)模式和USB主機(jī)模式在

USB

外設(shè)模式下,外部

USB

硬件(裝有Android的設(shè)備要連接的外部設(shè)備)充當(dāng)

USB

主機(jī)。外設(shè)的例子包括機(jī)器人、擴(kuò)展插座、診斷和音樂(lè)設(shè)備、電子報(bào)亭、讀卡器等其他設(shè)備,這種模式給予不具備主機(jī)功能的

Android

設(shè)備以與USB硬件交互的能力。在USB主機(jī)模式下,裝有

Android

的設(shè)備扮演著主機(jī)的角色。這種設(shè)備的例子包括數(shù)碼像機(jī),鍵盤(pán),鼠標(biāo)和游戲手柄。那些適應(yīng)面很廣的USB設(shè)備仍可以與Android應(yīng)用交互,前提是這些Android應(yīng)用可以正確的與這些設(shè)備通訊。/guide/topics/usb/index.html

USB主機(jī)模式常用的類(lèi):UsbManager:允許您枚舉已連接的USB設(shè)備并且與其進(jìn)行“交流”。UsbDevice:代表了一個(gè)已連接的USB的設(shè)備并且包含具有該設(shè)備驗(yàn)證信息,接口和接口點(diǎn)的方法。UsbInterface:代表了一個(gè)USB設(shè)備的一個(gè)接口,該接口定義了一系列關(guān)于設(shè)備的函數(shù)。一個(gè)設(shè)備在進(jìn)行“交流”的時(shí)候可以有一個(gè)或者多個(gè)接口UsbEndpoint:代表一個(gè)接口的接口點(diǎn),該接口點(diǎn)就是這個(gè)接口的通信信道。一個(gè)接口可以有一個(gè)或者多個(gè)這樣的接口點(diǎn),而且一般都是有輸入和輸出雙向通信的接口點(diǎn)。UsbDeviceConnection:代表該設(shè)備的一個(gè)連接,用來(lái)在接?點(diǎn)上傳輸數(shù)據(jù)。這個(gè)類(lèi)允許您能用同步或者異步的方式發(fā)送和返回?cái)?shù)據(jù)。UsbRequest:在通過(guò)UsbDeviceConnection和設(shè)備進(jìn)行“交流”的一個(gè)異步請(qǐng)求。UsbConstants:關(guān)于在linux內(nèi)核中l(wèi)inux/usb/ch9.h的相關(guān)定義的USB常量使用步驟(見(jiàn)附件)為了讓?xiě)?yīng)用可以發(fā)現(xiàn)一個(gè)USB設(shè)備,需要android.hardware.usb.action.USB_DEVICE_ATTACHED這個(gè)意圖指定一個(gè)意圖來(lái)進(jìn)行過(guò)濾獲取USB信息UsbManagermanager=(UsbManager)getSystemService(Context.USB_SERVICE);HashMap<String,UsbDevice>deviceList=manager.getDeviceList();UsbDevicedevice=deviceList.get("deviceName");

和設(shè)備通信

UsbInterface

intf=

device.getInterface(0);

UsbEndpoint

endpoint=

intf.getEndpoint(0);

UsbDeviceConnection

connection=

manager.openDevice(device);

connection.claimInterface(intf,

true);

connection.bulkTransfer(endpoint,

bytes,

bytes.length,

0);

終止通信

當(dāng)你完成數(shù)據(jù)的傳輸或者你的設(shè)備已拔出時(shí),通過(guò)調(diào)用releaseInterface()和close()來(lái)關(guān)閉接口和連接。Wi-Fi編程

ConnectivityManagerNetworkInfomWiFiNetworkInfo=mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)所需要用到的wifi相關(guān)Android包:.wifi常見(jiàn)操作主要包括以下及各類(lèi)和接口:1、WifiManager提供了管理WiFi連接的大部分API,主要包括如下內(nèi)容: 查看已經(jīng)配置好的網(wǎng)絡(luò)清單,而且可以修改個(gè)別記錄的屬性。 可以建立或是關(guān)閉WiFi網(wǎng)絡(luò)連接,并且可以查詢有關(guān)網(wǎng)絡(luò)狀態(tài)的動(dòng)態(tài)信息。 對(duì)接入點(diǎn)的掃描結(jié)果包含足夠的信息來(lái)決定需要與什么接入點(diǎn)建立連接。 同時(shí)還定義了許多常量來(lái)表示W(wǎng)iFi狀態(tài)的改變。常用的方法:getWiFiState,isWifiEnabled,setWifiEnabled,startScan,getScanResults等等基于Android的WiFi相關(guān)庫(kù)函數(shù)WiFi相關(guān)庫(kù)函數(shù)所需要用到的wifi相關(guān)Android包:.wifi常見(jiàn)操作主要包括以下及各類(lèi)和接口:2、WifiConfigurationWiFi網(wǎng)絡(luò)的配置,包括安全配置等。3.WifiInfoWiFi無(wú)線連接的描述,包括接入點(diǎn)、網(wǎng)絡(luò)連接狀態(tài)、隱藏的接入點(diǎn),ip地址、連接速度、mac地址、網(wǎng)絡(luò)id,信號(hào)強(qiáng)度等信息。4.ScanResult主要用來(lái)描述已經(jīng)檢測(cè)出的接入點(diǎn),包括接入點(diǎn)的地址、接入點(diǎn)的名稱(chēng)、身份認(rèn)證、頻率、信號(hào)強(qiáng)度等信息。找到周?chē)鶤P的關(guān)鍵步驟檢測(cè)網(wǎng)卡狀態(tài),修改網(wǎng)卡狀態(tài)——開(kāi)啟,進(jìn)行掃描周?chē)鷄p,打印結(jié)果classListWifiListernerimplementsOnClickListener{@OverridepublicvoidonClick(Viewv){wifiManager=(WifiManager)WifiActivity.this.getSystemService(Context.WIFI_SERVICE);wifiManager.startScan();mWifiList=wifiManager.getScanResults();for(inti=0;i<mWifiList.size();i++){sb.append(newInteger(i).toString()+".");sb.append(mWifiList.get(i).toString());sb.append("\n");}mainText.setText(sb);sb.delete(0,sb.capacity());}}藍(lán)牙編程,使用藍(lán)牙進(jìn)行設(shè)備通信,主要包含四個(gè)部分:藍(lán)牙設(shè)置、搜索設(shè)備、連接、傳輸數(shù)據(jù)BluetoothAdapter代表本地藍(lán)牙適配器(藍(lán)牙發(fā)射器),是所有藍(lán)牙交互的入?。通過(guò)它可以搜索其它藍(lán)牙設(shè)備,查詢已經(jīng)配對(duì)的設(shè)備列表,通過(guò)已知的MAC地址創(chuàng)建BluetoothDevice,創(chuàng)建BluetoothServerSocket監(jiān)聽(tīng)來(lái)自其它設(shè)備的通信。BluetoothDevice代表了一個(gè)遠(yuǎn)端的藍(lán)牙設(shè)備,使用它請(qǐng)求遠(yuǎn)端藍(lán)牙設(shè)備連接或者獲取遠(yuǎn)端藍(lán)牙設(shè)備的名稱(chēng)、地址、種類(lèi)和綁定狀態(tài)。BluetoothSocket代表了一個(gè)藍(lán)牙套接字的接?,是應(yīng)用程序通過(guò)輸?、輸出流與其他藍(lán)牙設(shè)備通信的連接點(diǎn)。BluetoothServerSocket代表打開(kāi)服務(wù)連接來(lái)監(jiān)聽(tīng)可能到來(lái)的連接請(qǐng)求(屬于server端),為了連接兩個(gè)藍(lán)牙設(shè)備必須有一個(gè)設(shè)備作為服務(wù)器打開(kāi)一個(gè)服務(wù)套接字。BluetoothClass描述了一個(gè)設(shè)備的特性(profile)或該設(shè)備上的藍(lán)牙一致可以提供哪些服務(wù)(service),但不可信。比如,設(shè)備是一個(gè)電話、計(jì)算機(jī)或手持設(shè)備;設(shè)備可以提供audio/telephony服務(wù)等??梢杂盟鼇?lái)進(jìn)行一些UI上的提示。BluetoothHeadset提供手機(jī)使用藍(lán)牙耳機(jī)的支持。這既包括藍(lán)牙耳機(jī)和免提(V1.5)模式。BluetoothA2dp定義高品質(zhì)的音頻,可以從一個(gè)設(shè)備傳輸?shù)搅硪粋€(gè)藍(lán)牙連接?!癆2DP的”代表高級(jí)音頻分配模式。BluetoothHealth代表了醫(yī)療設(shè)備配置代理控制的藍(lán)牙服務(wù)BluetoothHealthCallback一個(gè)抽象類(lèi),使用實(shí)現(xiàn)BluetoothHealth回調(diào)。你必須擴(kuò)展這個(gè)類(lèi)并實(shí)現(xiàn)回調(diào)方法接收更新應(yīng)用程序的注冊(cè)狀態(tài)和藍(lán)牙通道狀態(tài)的變化。BluetoothHealthAppConfiguration代表一個(gè)應(yīng)用程序的配置,藍(lán)牙醫(yī)療第三方應(yīng)用注冊(cè)與遠(yuǎn)程藍(lán)牙醫(yī)療設(shè)備交流。BluetoothProfile.ServiceListener當(dāng)他們已經(jīng)連接到或從服務(wù)斷開(kāi)時(shí)通知BluetoothProfileIPX的客戶時(shí)一個(gè)接?(即運(yùn)行一個(gè)特定的配置文件,內(nèi)部服務(wù))。BlueTooth使用至少要在AndroidManifest.xml中聲明兩個(gè)權(quán)限:BLUETOOTH和BLUETOOTH_ADMIN獲取BluetoothAdapter打開(kāi)藍(lán)牙:通過(guò)isEnabled()來(lái)檢查藍(lán)牙當(dāng)前是否可用。如果這個(gè)方法返回false,則藍(lán)牙不能夠使用。為了請(qǐng)求藍(lán)牙使用,呼叫startActivityForResult()與的ACTION_REQUEST_ENABLE動(dòng)作意圖獲取BluetoothAdapter查找匹配設(shè)備掃描設(shè)備開(kāi)始搜索設(shè)備,調(diào)用startDiscovery()。該函數(shù)是異步的,調(diào)用后立即返回,返回值表示搜索是否成功開(kāi)始。應(yīng)用中可以注冊(cè)一個(gè)帶ACTION_FOUNDIntent的BroadcastReceiver,搜索到每一個(gè)設(shè)備時(shí)都接收到消息。Intent攜帶著而外的字段信息EXTRA_DEVICE和EXTRA_CLASS,分別包含一個(gè)BluetoothDevice和一個(gè)BluetoothClass。使用cancelDiscovery()來(lái)停止搜索使能被發(fā)現(xiàn)如果想讓本地設(shè)備被其他設(shè)備發(fā)現(xiàn),可以帶ACTION_REQUEST_DISCOVERABLEactionIntent調(diào)用startActivityForResult(Intent,int)方法作為服務(wù)器連接通過(guò)持有?個(gè)打開(kāi)的BluetoothServerSocket對(duì)象。服務(wù)器socket的作用是偵聽(tīng)進(jìn)來(lái)的連接,如果一個(gè)連接被接受,提供一個(gè)連接好的BluetoothSocket對(duì)象。建立服務(wù)器socket和接收一個(gè)連接的基本步驟1.通過(guò)調(diào)用listenUsingRfcommWithServiceRecord(String,UUID)得到一個(gè)BluetoothServerSocket對(duì)象,當(dāng)客戶端試圖連接本設(shè)備,它將攜帶一個(gè)UUID用來(lái)唯一標(biāo)識(shí)它要連接的服務(wù),UUID必須匹配,連接才會(huì)被接受。2.通過(guò)調(diào)用accept()來(lái)偵聽(tīng)連接請(qǐng)求。這是一個(gè)阻塞的調(diào)用,直到有連接進(jìn)來(lái)或者產(chǎn)生異常才會(huì)返回。只有遠(yuǎn)程設(shè)備發(fā)送一個(gè)連接請(qǐng)求,并且攜帶的UUID與偵聽(tīng)它socket注冊(cè)的UUID匹配,連接請(qǐng)求才會(huì)被接受。如果成功,accept()將返回一個(gè)連接好的BluetoothSocket對(duì)象。3.除非需要再接收另外的連接,否則的話調(diào)用close()。close()釋放serversocket和它的資源,但不會(huì)關(guān)閉連接accept()返回的連接好的BluetoothSocket對(duì)象。作為客戶端連接1.用BluetoothDevice調(diào)用createRfcommSocketToServiceRecord(UUID)獲取一個(gè)BluetoothSocket對(duì)象。這個(gè)初始化的BluetoothSocket會(huì)連接到BluetoothDevice。2.調(diào)用connect()完成連接當(dāng)調(diào)用這個(gè)方法的時(shí)候,系統(tǒng)會(huì)在遠(yuǎn)程設(shè)備上完成一個(gè)SDP查找來(lái)匹配UUID。如果查找成功并且遠(yuǎn)程設(shè)備接受連接,就共享RFCOMM信道,connect()會(huì)返回。這也是一個(gè)阻塞的調(diào)用,不管連接失敗還是超時(shí)(12秒)都會(huì)拋出異常。管理連接如果已經(jīng)連接了兩個(gè)設(shè)備,他們都已經(jīng)擁有各自的連接好的BluetoothSocket對(duì)象。可以在設(shè)備間共享數(shù)據(jù)了。使用BluetoothSocket,傳輸任何數(shù)據(jù)通常來(lái)說(shuō)都很容易了:1.通過(guò)socket獲取輸入輸出流來(lái)處理傳輸(分別使用getInputStream()和getOutputStream())。2.用read(byte[])和write(byte[])來(lái)實(shí)現(xiàn)讀寫(xiě)?;赟ocket網(wǎng)絡(luò)編程Socket網(wǎng)絡(luò)通信的組成元素服務(wù)器,主要功能:偵聽(tīng)連接、接收連接、接收數(shù)據(jù)和向客戶端發(fā)送數(shù)據(jù)??蛻舳?,主要功能:發(fā)起連接、接收數(shù)據(jù)和向服務(wù)器發(fā)送數(shù)據(jù)Socket網(wǎng)絡(luò)通信的基本原理IP地址:主機(jī)標(biāo)識(shí)端口:服務(wù)類(lèi)型Socket=IP(address)

+Port(server)Java--Internet語(yǔ)言具備強(qiáng)大網(wǎng)絡(luò)通信功能基于套接字(Socket)通信方式流套接字TCP協(xié)議(TransmissionControlProtocol)UDP協(xié)議(UserDatagramProtocol)數(shù)據(jù)報(bào)套接字基于Socket網(wǎng)絡(luò)通信方式主要使用類(lèi)

Java的Socket屬于流式套接字通信,采用TCP協(xié)議,提供面向連接的服務(wù),實(shí)現(xiàn)可靠的通信。

J提供兩個(gè)類(lèi),實(shí)現(xiàn)Socke通信:ServerSocket--服務(wù)器端

Socket--客戶端通

操作TCP套接字的發(fā)送和接收需要借助java.io包的

InputStream/OutputStream

完成,分別通過(guò)方法實(shí)現(xiàn):Socket.getInputStream()/Socket.getOutputStream()Socket/ServerSocket構(gòu)造函數(shù)Socket()

通過(guò)系統(tǒng)默認(rèn)類(lèi)型的SocketImpl創(chuàng)建未連接套接字

Socket(InetAddressaddress,intport)

創(chuàng)建一個(gè)流套接字并將其連接到指定IP地址的指定端口號(hào)

Socket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort)

創(chuàng)建一個(gè)套接字并將其連接到指定遠(yuǎn)程端口上的指定遠(yuǎn)程地址

Socket(Stringhost,intport)

創(chuàng)建一個(gè)流套接字并將其連接到指定主機(jī)上的指定端口號(hào)

Socket(Stringhost,intport,InetAddresslocalAddr,intlocalPort)

創(chuàng)建一個(gè)套接字并將其連接到指定遠(yuǎn)程主機(jī)上的指定遠(yuǎn)程端口ServerSocket()

創(chuàng)建非綁定服務(wù)器套接字

ServerSocket(intport)

創(chuàng)建綁定到特定端口的服務(wù)器套接字

ServerSocket(intport,intbacklog)

利用指定的backlog創(chuàng)建服務(wù)器套接字并將其綁定到指定的本地端口號(hào)

ServerSocket(intport,intbacklog,InetAddressbindAddr)

使用指定的端口、偵聽(tīng)backlog和要綁定到的本地IP地址創(chuàng)建服務(wù)器

Socket/ServerSocket主要方法Socke通信機(jī)制OutputStream獲得Socket對(duì)象輸出流建立Socket連接通過(guò)流傳輸數(shù)據(jù)服務(wù)端聯(lián)結(jié)成功獲得已連接的Socket對(duì)象Socket(host,port)

創(chuàng)建Socket對(duì)象向指定主機(jī)端口發(fā)出連接請(qǐng)求客戶端Socket對(duì)象ServerSocket對(duì)象InputStream獲得Socket對(duì)象輸入流申請(qǐng)連接ServiceSocket.close()停止提供TCP連接服務(wù)一個(gè)ServerSocket對(duì)象和一個(gè)Socket對(duì)象一個(gè)Socket對(duì)象Socket.close()關(guān)閉TCP連接ServerSocket(port)創(chuàng)建ServiceSocke對(duì)象,提供TCP連接服務(wù)accept()在指定的端口監(jiān)聽(tīng)客戶端請(qǐng)求聯(lián)結(jié)創(chuàng)建InputStream獲得Socket對(duì)象輸入流Socket.close()關(guān)閉TCP連接OutputStream獲得Socket對(duì)象輸出流ServerSocket對(duì)象訪問(wèn)監(jiān)聽(tīng)Socke通信機(jī)制Server端Client端service=ServerSocket(port_number)創(chuàng)建service對(duì)象,以TCP服務(wù)實(shí)現(xiàn)端口監(jiān)聽(tīng)socket=ServerSocket.accept()創(chuàng)建socke對(duì)象,接收用戶訪問(wèn)請(qǐng)求Socket=Socket(port_number)創(chuàng)建socke對(duì)象,建立連接,發(fā)送訪問(wèn)請(qǐng)求InputStreamSocket對(duì)象輸入流OutputStreamSocket對(duì)象輸出流通過(guò)socke對(duì)象實(shí)現(xiàn)與Client端數(shù)據(jù)傳輸OutputStreamSocket對(duì)象輸出流InputStreamSocket對(duì)象輸入流通過(guò)socke對(duì)象,實(shí)現(xiàn)與Servert端數(shù)據(jù)傳輸socket.close()關(guān)閉Socke關(guān)閉結(jié)束與Client端的連接service.close()關(guān)閉監(jiān)聽(tīng)程序socket.close()關(guān)閉Socke結(jié)束與Server端的連接(1)建立連接(2)數(shù)據(jù)通訊(3)拆除連接客戶端開(kāi)啟INTERNET布局界面(Main.xml)獲取資源(EditText,Button,TextView)Socket通信數(shù)據(jù)讀寫(xiě)(DataInputStream/DataOutputStream)客戶端主要代碼:publicvoidonClick(Viewv){Sockets=null; DataOutputStreamdout=null; DataInputStreamdin=null;if(v==button1){//點(diǎn)擊的是按鈕 try{ s=newSocket("02",8888);//連接服務(wù)器

dout=newDataOutputStream(s.getOutputStream());//得到輸出流

din=newDataInputStream(s.getInputStream());//得到輸入流dout.writeUTF(editText.getText().toString());//向服務(wù)器發(fā)送消息textView.setText("服務(wù)器發(fā)來(lái)的消息:"+din.readUTF());//接收服務(wù)器發(fā)來(lái)的消息

}catch(Exceptione){ e.printStackTrace();//打印異常信息 }finally try{ if(dout!=null){ dout.close();//關(guān)閉輸入流 } if(din!=null){ din.close();//關(guān)閉輸入流 } if(s!=null) s.close();//關(guān)閉Socket連接 } } catch(Exceptione){ e.printStackTrace();//打印異常信息 }}}}服務(wù)器(例子)ServerSocketAcceptDataInputStream/DataOutputStreamRead/Write服務(wù)器端主要代碼:ServerSocketss=null;//ServerSocket的引用Sockets=null;//Socket的引用DataInputStreamdin=null;DataOutputStreamdout=null;try{ ss=newServerSocket(8888);//監(jiān)聽(tīng)到8888端口

System.out.println("已監(jiān)聽(tīng)到8888端口!");}catch(Exceptione){ e.printStackTrace();//打印異常信息}while(true){ try{ s=ss.accept();//等待客戶端連接

din=newDataInputStream(s.getInputStream()); dout=newDataOutputStream(s.getOutputStream());//得到輸入輸出流

Stringmsg=din.readUTF();//讀一個(gè)字符串

System.out.println("ip:"+s.getInetAddress());//打印客戶端IP System.out.println("msg:"+msg);//打印客戶端發(fā)來(lái)的消息

System.out.println("===================="); dout.writeUTF("HelloClient!");//向客戶端發(fā)送消息

} catch(Exceptione){ e.printStackTrace();//打印異常信息

}

基于HTTP協(xié)議的網(wǎng)絡(luò)編程統(tǒng)一資源定位器URL:URL(UniformResourceLocator)是一致資源定位器的簡(jiǎn)稱(chēng),它表示Internet上某一資源的地址。通過(guò)URL我們可以訪問(wèn)Internet上的各種網(wǎng)絡(luò)資源,比如最常見(jiàn)的WWW,F(xiàn)TP站點(diǎn)。瀏覽器通過(guò)解析給定的URL可以在網(wǎng)絡(luò)上查找相應(yīng)的文件或其他資源。URL的組成protocol://resourceName協(xié)議名(protocol)指明獲取資源所使用的傳輸協(xié)議,如http、ftp、gropher、file等,資源名(resourceName)則應(yīng)該是資源的完整地址,包括主機(jī)名、端口號(hào)、文件名或文件內(nèi)部的一個(gè)引用。例如:/協(xié)議名://主機(jī)名/home/welcome.html協(xié)議名://機(jī)器名+文件名:80/Gamelan/network.html#BOTTOM協(xié)議名://機(jī)器名+端口號(hào)+文件名+內(nèi)部引用.創(chuàng)建一個(gè)URL為了表示URL,中實(shí)現(xiàn)了類(lèi)URL。我們可以通過(guò)下面的構(gòu)造方法來(lái)初始化一個(gè)URL對(duì)象:(1)publicURL(Stringspec);(2)publicURL(URLcontext,Stringspec);(3)publicURL(Stringprotocol,Stringhost,Stringfile);(4)publicURL(Stringprotocol,Stringhost,intport,Stringfile);解析一個(gè)URL一個(gè)URL對(duì)象生成后,其屬性是不能被改變的,但是我們可以通過(guò)類(lèi)URL所提供的方法來(lái)獲取這些屬性從URL讀取WWW網(wǎng)絡(luò)資源當(dāng)我們得到一個(gè)URL對(duì)象后,就可以通過(guò)它讀取指定的WWW資源。通過(guò)HttpURLConnetction連接WWW通過(guò)URL的方法openStream(),我們只能從網(wǎng)絡(luò)上讀取數(shù)據(jù),如果我們同時(shí)還想輸出數(shù)據(jù),例如向服務(wù)器端的CGI程序發(fā)送一些數(shù)據(jù),我們必須先與URL建立連接,然后才能對(duì)其進(jìn)行讀寫(xiě),這時(shí)就要用到類(lèi)URLConnection了。CGI是公共網(wǎng)關(guān)接口(CommonGatewayInterface)的簡(jiǎn)稱(chēng),它是用戶瀏覽器和服務(wù)器端的應(yīng)用程序進(jìn)行連接的接口,有關(guān)CGI程序設(shè)計(jì),請(qǐng)讀者參考有關(guān)書(shū)籍。類(lèi)HttpURLConnetction也在包中定義,它表示Java程序和URL在網(wǎng)絡(luò)上的通信連接。當(dāng)與一個(gè)URL建立連接時(shí),首先要在一個(gè)URL對(duì)象上通過(guò)方法openConnection()生成對(duì)應(yīng)的HttpURLConnetction對(duì)象。如果連接過(guò)程失敗,將產(chǎn)生IOException.HttpURLConnectionucon=null;BufferedReaderreader=null;StringBuilderbab=null;try{URLmyURL=newURL

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論