版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Socket編程計算機科學與技術學院網絡工程教研室趙秀梅Socket編程1、包4、Socket類3、ServerSocket類
5、數(shù)據(jù)報式套接字中所需的類2、InetAddress類包簡介包:用于網絡通信的類。.InetAddress:互聯(lián)網地址類.URL:統(tǒng)一資源定位類.Socket:套接字類.ServerSocket:效勞器套接字類.DatagramPacket:數(shù)據(jù)報類.DatagramSocket:數(shù)據(jù)報套接字類Socket編程2、InetAddress類功能簡介InetAddress類又稱為互聯(lián)網地址類,。該類的對象是封裝計算機名稱和IP地址的實例。可以使用主機名來獲取InetAddress的實例,或者使用IP地址來構造InetAddress的實例。InetAddress對域名進行解析是使用本地機器配置或者網絡命名效勞〔如域名系統(tǒng)DNS〕和網絡信息效勞〔NetworkInformationService,NIS〕來實現(xiàn)的。Socket編程獲取InetAddress類對象的方法InetAddress的構造函數(shù)不是公開的〔public〕,所以需要通過它提供的靜態(tài)方法來獲取。1〕publicstaticInetAddressgetByName(Stringhostname);根據(jù)給定的主機名hostname,InetAddress會嘗試做連接DNS效勞器,并返回該主機名對應的InetAddress對象。如果找不到主時機拋出UnknownHostException異常。InetAddressi=InetAddress.getByName(“sina”);System.out.println(i);2、InetAddress類Socket編程獲取InetAddress類對象的方法1〕publicstaticInetAddressgetByName(Stringhostname);hostname的值可為IP地址字符串,此時可以利用InetAddress對象的getHostName()方法按IP地址反向查找。如果沒有查到相應的主機名,getHostName()返回的點分十進制的地址字符串。InetAddressi=InetAddress.getByName(“”);System.out.println(i); System.out.println(i.getHostName());//查到相應的主機名2、InetAddress類Socket編程獲取InetAddress類對象的方法1〕publicstaticInetAddressgetByName(Stringhostname);hostname的值可為IP地址字符串,此時可以利用InetAddress對象的getHostName()方法按IP地址反向查找。如果沒有查到相應的主機名,getHostName()返回的點分十進制的地址字符串。InetAddressi=InetAddress.getByName(“47”);System.out.println(i);
System.out.println(i.getHostName());//沒查到相應的主機名2、InetAddress類Socket編程獲取InetAddress類對象的方法2〕publicstaticInetAddress[]getAllByName(Stringhostname);獲取具有相同名字hostname的一組InetAddress對象。如果找不到主時機拋出UnknownHostException異常。InetAddress[]inetOfbaidu= InetAddress.getAllByName(“baidu");for(intj=0;j<inetOfbaidu.length;j++){(inetOfbaidu[j]);}2、InetAddress類Socket編程獲取InetAddress類對象的方法3〕publicstaticInetAddressgetLocalHost();返回本機的InetAddress對象。查找出錯,拋出UnknownHostExceptionInetAddressipOfLocal=InetAddress.getLocalHost();System.out.println(ipOfLocal);2、InetAddress類Socket編程獲取InetAddress類對象的方法4〕publicstaticInetAddressgetByAddress(byte[]addr)根據(jù)給定的addr,返回其對應的InetAddress對象。2、InetAddress類Socket編程byte[]address={(byte)107,(byte)23,(byte)216,(byte)196};InetAddressx=InetAddress.getByAddress(address);System.out.println(x);System.out.println(x.getHostName());3.1、ServerSocket類簡介類ServerSocket類用在效勞器端,偵聽和響應客戶端的連接請求。ServerSocket類的主要任務:效勞器端耐心地等候客戶端的連接請求,一旦客戶端應用程序申請建立一個Socket連接,ServerSocket類就會通過accept()方法返回一個對應的效勞器端Socket對象,以便進行直接通信。從兩臺計算機連接成功時起,效勞器端與客戶端就得到了一個真正的“Socket-Socket”連接。Socket編程3、ServerSocket構造方法重載形式之一publicServerSocket(intport)throwsIOException創(chuàng)立一個指定端口號的效勞器端的ServerSocket對象。連接請求隊列的最大隊列長度為50,假設連接請求到達時隊列已滿,那么拒絕連接。假設無法創(chuàng)立Socket并綁定于所請求的端口號那么拋出IOException異常。參數(shù)port:端口號。3.2、ServerSocket類構造方法Socket編程構造方法重載形式之二publicServerSocket(int
port,int
backlog)throwsIOException參數(shù):backlog:連接請求隊列的最大長度。
3.2、ServerSocket類構造方法Socket編程構造方法重載形式之三publicServerSocket(intport,intbacklog,InetAddressbindAddr)throwsIOException參數(shù):bindAddr:需指定的要綁定到的本地IP地址。主要用于在多IP地址系統(tǒng)上運行的效勞器。效勞器Socket只在指定的地址偵聽入站連接,不會偵聽通過主機其他地址進入的連接。其他構造函數(shù)默認綁定本地主機的所有IP地址。當bindAddr為null時,缺省地接受對任何所有本地IP地址的連接。3.2、ServerSocket類構造方法Socket編程1〕publicInetAddressgetInetAddress()返回效勞器Socket的本地地址信息。2〕publicintgetLocalPort()效勞器socket正在監(jiān)聽的端口號。3〕publicStringtoString()返回該socket的字符串表示3.3、ServerSocket類其他方法Socket編程4〕publicSocketaccept()throwsIOException功能:在效勞器端指定端口偵聽客戶端發(fā)出的連接請求。該方法一直阻塞直到連接成功。如果效勞器端與客戶端連接成功,該方法將返回一個新的Socket對象,通過該Socket對象與客戶端的Socket對象進行通信。假設等待連接時發(fā)生I/O錯誤那么拋出IOException異常。3.3、ServerSocket類其他方法Socket編程類Java用來實現(xiàn)客戶端TCP操作的根底類。在Java編程中Socket類負責一切與TCP有關的操作,包括連接的建立、傳輸、連接關閉及Socket選項的設置等操作。Socket類的輸入輸出都是通過流來實現(xiàn)的。Socket編程4、Socket類4.1、Socket類構造方法Socket類的構造方法Socket對象的創(chuàng)立可通過使用Socket類的構造方法完成。構造方法的功能:1〕創(chuàng)立Socket對象2〕客戶端負責呼叫,嘗試向效勞器發(fā)起連接請求,連接效勞器端的Socket。通過構造方法可以測試能否和主機的某個端口建立連接。Socket編程構造方法重載形式之一publicSocket(Stringhost,intport)throws UnknownHostException,IOException參數(shù):host:效勞器主機名。port:端口號。功能:在客戶端以指定的效勞器host和端口號port創(chuàng)立一個Socket對象,并向效勞器發(fā)出連接請求。在二者建立連接的過程中,由客戶機負責發(fā)起呼叫。4.1、Socket類構造方法Socket編程構造方法重載形式之一publicSocket(Stringhost,intport)throws UnknownHostException,IOException異常的拋出:UnknownHostException:假設域名效勞器無法解析該效勞器名或域名效勞器沒有運行,此時host無法可知,那么拋出UnknownHostException異常IOException:假設生成Socket時發(fā)生I/O錯誤那么拋出IOException異常。4.1、Socket類構造方法Socket編程構造方法重載形式之二publicSocket(InetAddressaddr,intport)throwsIOException參數(shù):addr:效勞器地址信息InetAddress類對象4.1、Socket類構造方法Socket編程構造方法重載形式之三publicSocket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort)throwsIOException功能:生成一個Socket并且連接到由address指定的效勞器的端口port上。該Socket將捆綁到由localAddr指定的本地主機的localPort端口上。4.1、Socket類構造方法Socket編程publicInetAddressgetInetAddress()返回連接到socket的遠程主機的IP地址信息對象。publicInetAddressgetLocalAddress()返回socket關聯(lián)的本地主機的IP地址信息對象。publicintgetPort()返回socket連接到的遠程效勞的端口號。publicintgetLocalPort()返回該Socket綁定在本地計算機上的端口號。4.2、Socket類其他方法Socket編程publicInputStreamgetInputStream()throwsIOException為當前的socket對象創(chuàng)立輸入流。publicOutputStreamgetOutputStream()throws IOException為當前的socket對象創(chuàng)立輸出流。publicStringtoString()轉換該Socket成一個String字符串表示。publicsynchronizedvoidclose()throwsIOException關閉建立的Socket連接。當通信結束時,應調用該方法關閉Socket連接。假設在關閉Socket連接時發(fā)生I/O錯誤那么拋出IOException異常。4.2、Socket類其他方法Socket編程Socket編程5.2數(shù)據(jù)報式套接字中所需的類DatagramPacket類數(shù)據(jù)報封裝類。把具體的要傳輸?shù)男畔ⅲ琁P地址,端口號和需要傳輸?shù)臄?shù)據(jù)等封裝在稱為數(shù)據(jù)報〔Datagram〕的UDP包中。DatagramSocket類用于收發(fā)UDP數(shù)據(jù)報的套接字接口類。為發(fā)送數(shù)據(jù),要將數(shù)據(jù)封裝到DatagramPacket中,使用DatagramSocket發(fā)送該包。要接收數(shù)據(jù),要從DatagramSocket中接收一個DatagramPakcet對象,然后解析該包的內容Socket編程5.3
DatagramSocket類功能該類表示用來發(fā)送和接收數(shù)據(jù)報的套接字〔Socket〕。要收發(fā)DatagramPacket,必須創(chuàng)立一個數(shù)據(jù)報套接字DatagramSocket。構造方法publicDatagramSocket()throwsSocketException功能:創(chuàng)立用于數(shù)據(jù)報通信的socket對象,由本地主機自動指定的一個可用的端口號。DatagramSocketsocket=newDatagramSocket();//創(chuàng)立一個用于收發(fā)數(shù)據(jù)報的DatagramSocket對象Socket編程5.3
DatagramSocket類構造方法publicDatagramSocket(intport)throwsSocketException功能:創(chuàng)立用于數(shù)據(jù)報通信的socket對象,并且把它綁定到本地主機指定的端口port。publicDatagramSocket(intport,InetAddressaddr)throwsSocketException功能:創(chuàng)立用于數(shù)據(jù)報通信的socket對象,并綁定到指定的本地地址addr的指定端口port。DatagramSocketsocket=newDatagramSocket(3000);//在端口3000創(chuàng)立用于通信的Socket對象Socket編程5.3
DatagramSocket類常用方法publicvoidsend(DatagramPacketp)throwsIOException功能:將數(shù)據(jù)報p發(fā)送出去。publicsynchronizedvoidreceive(DatagramPacketp)throwsIOException功能:從網絡接收一個UDP數(shù)據(jù)報包,并存儲在DatagramPacket類對象p中。該數(shù)據(jù)報p還包含發(fā)送方的IP地址和發(fā)送方主機的端口號。Socket編程5.3
DatagramSocket類publicintgetLocalPort()功能:獲取該socket綁定的本地主機的端口號。
publicvoidclose()功能:釋放該數(shù)據(jù)報socket所占用的端口。常用方法publicInetAddressgetLocalAddress()功能:獲取該socket綁定的本地地址。
Socket編程5.4
DatagramPacket類功能是進行數(shù)據(jù)報通信的根本單位。包含了IP地址、端口號和需要傳輸?shù)臄?shù)據(jù)等。在發(fā)送和接收數(shù)據(jù)報時,要創(chuàng)立DatagramPakcet類對象作為數(shù)據(jù)的載體。構造方法之一:發(fā)送用的數(shù)據(jù)報publicDatagramPacket(byteibuf[],intilength,InetAddressiaddr,intiport)構造方法之二:接收用的數(shù)據(jù)報publicDatagramPacket(byte
ibuf[],intilength)Socket編程5.4
DatagramPacket類構造方法之一:發(fā)送用的數(shù)據(jù)報publicDatagramPacket(byteibuf[],intilength,InetAddressiaddr,intiport)功能:創(chuàng)立一個用于發(fā)送數(shù)據(jù)報的DatagramPacket類對象。參數(shù):ibuf:存儲數(shù)據(jù)包的緩沖區(qū)。ilength:發(fā)送數(shù)據(jù)包的長度,必須小于等于ibuf.length。iaddr:數(shù)據(jù)報要發(fā)送到的目的IP地址。iport:數(shù)據(jù)報要發(fā)送到的目的地址的端口號。Socket編程5.4
DatagramPacket類構造方法之一:發(fā)送用的數(shù)據(jù)報publicDatagramPacket(byteibuf[],intilength,InetAddressiaddr,intiport)舉例:Stringdate=newDate().toString();//獲取效勞器當前時間buf=date.getBytes();//將當前日期時間存入字節(jié)數(shù)組bufpacket=newDatagramPacket(buf,buf.length,addr,port);//構造發(fā)送數(shù)據(jù)報包socket.send(packet);//發(fā)送數(shù)據(jù)報Socket編程5.4
DatagramPacket類構造方法之一:接收用的數(shù)據(jù)報publicDatagramPacket(byteibuf[],intilength)功能:創(chuàng)立一個用于接收數(shù)據(jù)報的DatagramPacket類對象。參數(shù):ibuf:存儲數(shù)據(jù)包的緩沖區(qū)。在數(shù)據(jù)報通信中,發(fā)送和接收一個數(shù)據(jù)報,都需提供一個緩沖區(qū),用來安置發(fā)送和接收到的數(shù)據(jù)報。ilength:接收數(shù)據(jù)包的長度,必須小于等于ibuf.length。舉例:DatagramPacketpacket=newDatagramPacket(buf,buf.length);socket.receive(packet);//接收數(shù)據(jù)報Socket編程5.4
DatagramPacket類常用方法之解析數(shù)據(jù)報的方法〔1〕publicsynchronizedInetAddressgetAddress()功能:返回存放在接收或發(fā)送的數(shù)據(jù)報中的遠程主機的IP地址?!?〕publicsynchronizedintgetPort()功能:返回存放在接收或發(fā)送的數(shù)據(jù)報中的遠程端口號?!?〕publicsynchronizedbyte[]getData()功能:返回一個字節(jié)數(shù)組,其中包含數(shù)據(jù)報中的數(shù)據(jù)?!?〕publicsynchronizedintgetLength()功能:返回數(shù)據(jù)報中數(shù)據(jù)的長度
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44462.2-2024工業(yè)互聯(lián)網企業(yè)網絡安全第2部分:平臺企業(yè)防護要求
- GB/T 21220-2024軟磁金屬材料
- 2024年唐山市玉田縣一級造價工程師《土建計量》深度自測卷含解析
- 6 秋天的雨 教學設計 -2024-2025學年語文三年級上冊統(tǒng)編版
- 粵教版信息技術八年級上冊第一單元第六課《圖像效果的處理》教學設計
- Unit 1 Back to school Integrated skills (II) 教學設計-2024-2025學年高一英語譯林版(2020)必修第一冊
- 2024-2025學年新教材高中生物第一章細胞的分子組成第二節(jié)生物大分子以碳鏈為骨架課時1課后精練含解析浙科版必修1
- 2024-2025學年高中英語Unit1CulturalheritageDiscoveringUsefulStructures重點練同步作業(yè)新人教版必修2
- 學校廚師崗位技能知識競賽考試題庫(含答案)
- 工程測量工程技術人員賽項備賽試題庫(濃縮500題)
- 安全疏散與火場逃生
- 青年你為什么要入團-團員教育主題班會-熱點主題班會課件
- (正式版)SHT 3158-2024 石油化工管殼式余熱鍋爐
- 小班數(shù)學:數(shù)一數(shù)(1-5數(shù)數(shù)、點卡)
- (新版)云南醫(yī)保練兵理論知識考試題庫大全-下(判斷題部分)
- 2024年畜禽屠宰企業(yè)獸醫(yī)衛(wèi)生檢驗人員考試試題
- (2024年)農作物病蟲害綠色防控技術課件
- 醫(yī)療健康博覽會策劃
- SJ-T 11795-2022 鋰離子電池電極材料中磁性異物含量測試方法
- 文創(chuàng)產品設計研究方法
- 《區(qū)域協(xié)調發(fā)展》課件
評論
0/150
提交評論