




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、JAVA語(yǔ)言程序設(shè)計(jì)網(wǎng)網(wǎng) 絡(luò)絡(luò) 編編 程程主要內(nèi)容主要內(nèi)容nURLn通過(guò)通過(guò)URLConnection讀寫(xiě)讀寫(xiě)WWW資源資源nsocket通信通信n數(shù)據(jù)報(bào)通信數(shù)據(jù)報(bào)通信URL類類nURL(Uniform Resource Locator)統(tǒng)一資源定位器的簡(jiǎn)稱,它表示統(tǒng)一資源定位器的簡(jiǎn)稱,它表示Internet上某一資源的地上某一資源的地址。址。nURL的組成的組成protocol:resourceName協(xié)議名指明獲取資源所使用的傳輸協(xié)議,如協(xié)議名指明獲取資源所使用的傳輸協(xié)議,如http、ftp、gopher、file等,資源名則應(yīng)該是資源的完整地址,包括等,資源名則應(yīng)該是資源的完整地址,包括
2、主機(jī)名、端口號(hào)、文件名或文件內(nèi)部的一個(gè)引用。主機(jī)名、端口號(hào)、文件名或文件內(nèi)部的一個(gè)引用。nhttp:/ 中實(shí)現(xiàn)了類中實(shí)現(xiàn)了類URL。 qpublic URL(String spec) 例子:例子: URL urlBase = new URL( “http:/ );qpublic URL(URL context, String spec) 例子:例子: URL gamelan = new URL(http:/ URL Games = new URL(gamelan, Gamelan.game.html); URL gamelanNetwork = new URL(gamelan, G.html)
3、;qpublic URL(String protocol, String host, String file); 例子:例子: new URL(http, , /pages/G.html);qpublic URL(String protocol, String host, int port, String file); 例子:例子: URL gamelan =new URL(http,80,pages/Gwork.html);try URL myURL = new URL(. . .) catch (MalformedURLException e) . . . / exception hand
4、ler code here . . .獲取獲取URL對(duì)象的屬性對(duì)象的屬性 n一個(gè)一個(gè)URL對(duì)象生成后,其屬性是不能被改變的。通對(duì)象生成后,其屬性是不能被改變的。通過(guò)類過(guò)類URL所提供的方法,可以獲取這些屬性:所提供的方法,可以獲取這些屬性:qpublic String getProtocol()qpublic String getHost()qpublic int getPort() /如果沒(méi)有設(shè)置端口,返回如果沒(méi)有設(shè)置端口,返回-1qpublic String getFile()qpublic String getRef() /獲取該獲取該URL在文件中的相對(duì)位置在文件中的相對(duì)位置qpubl
5、ic String getQuery() /獲取該獲取該URL的查詢信息的查詢信息qpublic String getPath() /獲取該獲取該URL的路徑的路徑qpublic String getAuthority() /獲取該獲取該URL的權(quán)限信息的權(quán)限信息qpublic String getUserInfo() /獲得使用者的信息獲得使用者的信息import .*;import java.io.*; public class ParseURLpublic static void main (String args) throws Exception URL Aurl=new URL(h
6、ttp:/:80/docs/books/);URL tuto=new URL(Aurl,ro.html#DOWNLOADING);System.out.println(protocol=+ tuto.getProtocol();System.out.println(host =+ tuto.getHost();System.out.println(filename=+ tuto.getFile();System.out.println(port=+ tuto.getPort();System.out.println(ref=+tuto.getRef();System.o
7、ut.println(query=+tuto.getQuery();System.out.println(path=+tuto.getPath();System.out.println(UserInfo=+tuto.getUserInfo();System.out.println(Authority=+tuto.getAuthority(); protocol=http host = filename=/docs/books/ro.html port=80 ref=DOWNLOADING query=null path=/docs/books/r
8、o.html UserInfo=null Authority=:80 通過(guò)通過(guò)URL讀取讀取WWW信息信息n得到一個(gè)得到一個(gè)URL對(duì)象后,就可以通過(guò)它讀取指定對(duì)象后,就可以通過(guò)它讀取指定的的WWW資源。使用資源。使用URL類定義的方法:類定義的方法:qInputStream openStream();該方法與指定的該方法與指定的URL建立連接并返回建立連接并返回InputStream類類的對(duì)象以從這一連接中讀取數(shù)據(jù)。的對(duì)象以從這一連接中讀取數(shù)據(jù)。 public class URLReader public static void main(String args) throws Excepti
9、on URL tirc = new URL(http:/ );BufferedReader in = new BufferedReader(new InputStreamReader(tirc.openStream();String inputLine;while (inputLine = in.readLine() != null) System.out.println(inputLine);in.close(); ChinaRen 通過(guò)通過(guò)URLConnection讀寫(xiě)讀寫(xiě)WWW資源資源n第一步:第一步:與與URL建立連接建立連接。 try URL tirc = new URL(http:
10、/ ); URLConnectionn tc = tirc.openConnection(); catch (MalformedURLException e) / new URL() failed . . . catch (IOException e) / openConnection() failed . . .類類URLConnection也在包也在包中定義,表示中定義,表示Java程序和程序和URL在網(wǎng)絡(luò)上的通信連接在網(wǎng)絡(luò)上的通信連接。 n第二步:得到第二步:得到URLConnection對(duì)象之后,可以用對(duì)象之后,可以用如下方法得到相應(yīng)的輸入如下方法得到相應(yīng)的輸入/輸出流:輸出流:qIn
11、putStream getInputStream( )qOutputStream getOutputStream( )之后就可以讀寫(xiě)輸入之后就可以讀寫(xiě)輸入/輸出流,完成數(shù)據(jù)的讀寫(xiě)。輸出流,完成數(shù)據(jù)的讀寫(xiě)。URL url =new URL (“http:/ con=url.openConnection();DataInputStream dis=new DataInputStream (con.getInputSteam();PrintStream ps=new PrintSteam(con.getOutupSteam();String line=dis.readLine();ps.printl
12、n(“client”); socket通信通信n網(wǎng)絡(luò)上的兩個(gè)程序通過(guò)一個(gè)雙向的通信連接實(shí)網(wǎng)絡(luò)上的兩個(gè)程序通過(guò)一個(gè)雙向的通信連接實(shí)現(xiàn)數(shù)據(jù)的交換,這個(gè)雙向鏈路的一端稱為一個(gè)現(xiàn)數(shù)據(jù)的交換,這個(gè)雙向鏈路的一端稱為一個(gè)socket。nsocket通常用來(lái)實(shí)現(xiàn)客戶方和服務(wù)方的連接。通常用來(lái)實(shí)現(xiàn)客戶方和服務(wù)方的連接。Socket CommunicationClientServerRequestResponseClientSocketServerSocketsocketsocket通信的一般結(jié)構(gòu)通信的一般結(jié)構(gòu) qserver端端listen( (監(jiān)聽(tīng)監(jiān)聽(tīng)) )某個(gè)端口是否有連接請(qǐng)求;某個(gè)端口是否有連接請(qǐng)求;q
13、client端向端向server端發(fā)出端發(fā)出connect( (連接連接) )請(qǐng)求;請(qǐng)求;qserver端向端向client端發(fā)回端發(fā)回accept(接受)消息;(接受)消息;qserver端和端和client端通過(guò)端通過(guò)send,write等方法與對(duì)等方法與對(duì)方通信。方通信。q關(guān)閉關(guān)閉socket 。 創(chuàng)建創(chuàng)建socketvSocket(InetAddress address, int port);vSocket(InetAddress address, int port, boolean stream);vSocket(String host, int port);vSocket(Stri
14、ng host, int port, boolean stream);vServerSocket(int port);vServerSocket(int port, int count);q類類Socket和和ServerSocket被定義于被定義于包,分別包,分別用來(lái)表示雙向連接的客戶端和服務(wù)器端。用來(lái)表示雙向連接的客戶端和服務(wù)器端。 n客戶端客戶端Socket的建立的建立Socket socket;try socket=new Socket(”,2000);catch(IOException e) System.out.println(Error:+e);n服務(wù)器端服務(wù)器
15、端Socket的建立的建立ServerSocket server=null;try server=new ServerSocket(2000);catch(IOException e) System.out.println(can not listen to :+e);Socket socket=null;try socket=server.accept();catch(IOException e) System.out.println(Error:+e);n打開(kāi)輸入打開(kāi)輸入/出流出流PrintStream os=new PrintStream(new BufferedOutputStream
16、(socket.getOutputStream();DataInputStream is=newDataInputStream(socket.getInputStream();關(guān)閉關(guān)閉socketnos.close();nis.close();nsocket.close();MultiTalkClient.java import java.io.*;import .*;public class MultiTalkClientint num; public static void main (String args) trySocket socket=new Socket(,4
17、700);BufferedReader sin=new BufferedReader(new InputStreamReader(System.in);PrintWriter os=new PrintWriter(new OutputStreamWriter(socket.getOutputStream();BufferedReader is=new BufferedReader(new InputStreamReader (socket.getInputStream();String readline;readline=sin.readLine();while(!readline.equal
18、s(bye)os.println(readline);os.flush();System.out.println(Client:+readline);System.out.println (Server:+is.readLine();readline=sin.readLine();os.close();is.close();socket.close(); catch(Exception e)System.out.println(Error+e); TalkServer.javaimport java.io.*;import .*;public class TalkServerpublic st
19、atic void main (String args)ServerSocket server=null;tryserver=new ServerSocket(4700);catch(Exception e)System.out.println(can not listen to :+e);Socket socket=null;int clientNum=0;while(true)trysocket=server.accept();catch(Exception e)System.out.println (Error:+e);new ServerThread(socket,clientNum)
20、.start(); clientNum+;class ServerThread extends ThreadSocket socket=null;int clientnum;public ServerThread(Socket socket,int num)this.socket=socket;clientnum=num+1;public void run() tryString line;BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream();PrintWriter os=new P
21、rintWriter(new OutputStreamWriter(socket.getOutputStream();BufferedReader sin=new BufferedReader (new InputStreamReader(System.in);line=sin.readLine();while(!line.equals(bye)os.println(line);os.flush();System.out.println(Server:+line);System.out.println(Client+clientnum+:+is.readLine();line=sin.read
22、Line();is.close();os.close();socket.close();catch(Exception e)System.out.println(Error:+e); 數(shù)據(jù)報(bào)通信數(shù)據(jù)報(bào)通信n包包中提供了兩個(gè)類用來(lái)支持?jǐn)?shù)據(jù)報(bào)通信:中提供了兩個(gè)類用來(lái)支持?jǐn)?shù)據(jù)報(bào)通信:q DatagramSocket用于在程序之間建立傳送數(shù)據(jù)報(bào)的用于在程序之間建立傳送數(shù)據(jù)報(bào)的通信連接;通信連接;q DatagramPacket用來(lái)表示一個(gè)數(shù)據(jù)報(bào)。用來(lái)表示一個(gè)數(shù)據(jù)報(bào)。 DatagramSocketn用數(shù)據(jù)報(bào)方式編寫(xiě)用數(shù)據(jù)報(bào)方式編寫(xiě)client/server程序時(shí),無(wú)論在程序時(shí),無(wú)論在客戶方還是服務(wù)方,首
23、先都要建立一個(gè)客戶方還是服務(wù)方,首先都要建立一個(gè)DatagramSocket對(duì)象,用來(lái)接收或發(fā)送數(shù)據(jù)報(bào)。對(duì)象,用來(lái)接收或發(fā)送數(shù)據(jù)報(bào)。 qDatagramSocket() ;qDatagramSocket(int prot);qDatagramSocket(int port, InetAddress laddr) ;DatagramPacketn然后使用然后使用DatagramPacket類對(duì)象作為傳輸數(shù)據(jù)類對(duì)象作為傳輸數(shù)據(jù)的載體。的載體。 qDatagramPacket(byte buf,int length);qDatagramPacket(byte buf, int length, Ine
24、tAddress addr, int port);qDatagramPacket(byte buf, int offset, int length);qDatagramPacket(byte buf, int offset, int length, InetAddress address, int port); ; 接收方接收方DatagramPacket packet=new DatagramPacket(buf, 256); socket.receive (packet); 發(fā)送方發(fā)送方 DatagramPacket packet=new DatagramPacket(buf, lengt
25、h, address, port);socket.send(packet); QuoteClient.javaimport java.io.*;import .*;import java.util.*;public class QuoteClientpublic static void main(Stringargs) throws IOExceptionif(args.length !=1) System.out.println(Usage:java QuoteClient); return; /get a datagram socketDatagramSocket socket=new D
26、atagramSocket(); /send requestbyte buf=new byte256;InetAddress address=InetAddress.getByName(args0);DatagramPacket packet=new DatagramPacket(buf, buf.length,address,4445);socket.send(packet); /get responsepacket=new DatagramPacket(buf,buf.length);socket.receive(packet); /display responseString recei
27、ved=new String(packet.getData();System.out.println(Quote of the Moment:+received); socket.close(); 服務(wù)器方程序如下:服務(wù)器方程序如下:QuoteServer.java pulic class QuoteServer public static void main(String args) throws java.io.IOException new QuoteServerThread().start(); QuoteServerThread.java import java.io.*;impor
28、t .*;import java.util.*; public class QuoteServerThread extends Thread protected DatagramSocket socket=null;protected BufferedReader in=null;protected boolean moreQuotes=true; public QuoteServerThread() throws IOException this (QuoteServerThread); public QuoteServerThread(String name) throws IOExceptionsuper (name);socket=new DatagramSocket (4445); tryin=new B
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020-2021深圳育才中學(xué)(初中)小學(xué)三年級(jí)數(shù)學(xué)下期末一模試卷帶答案
- 安裝鐵塔施工方案
- 2024年黑龍江大慶中考滿分作文《詩(shī)中誦出赤子心》
- 個(gè)人購(gòu)銷合同范例范例
- 修路個(gè)人勞務(wù)合同范例
- 合伙餐廳合同范本
- 跨部門合作的工作計(jì)劃實(shí)例
- 鄉(xiāng)村樹(shù)苗銷售合同范例
- 學(xué)生自我管理與目標(biāo)追蹤計(jì)劃
- 培養(yǎng)員工潛能與激勵(lì)方式計(jì)劃
- 湖南省對(duì)口招生考試醫(yī)衛(wèi)專業(yè)試題(2024-2025年)
- 2023年貴州貴州貴安發(fā)展集團(tuán)有限公司招聘筆試真題
- 福建省漳州市2023-2024學(xué)年高二上學(xué)期期末考試化學(xué)試題 含答案
- 初中數(shù)學(xué)新課程標(biāo)準(zhǔn)(2024年版)
- 煤礦危險(xiǎn)源辨識(shí)和風(fēng)險(xiǎn)考核試卷
- 科學(xué)計(jì)算語(yǔ)言Julia及MWORKS實(shí)踐 課件 4-Syslab簡(jiǎn)介
- 2024機(jī)械車間裝配作業(yè)指導(dǎo)書(shū)
- 城市污水處理廠改造施工方案
- 八項(xiàng)規(guī)定解讀
- 2024年高等教育法學(xué)類自考-00369警察倫理學(xué)考試近5年真題集錦(頻考類試題)帶答案
- 礦山開(kāi)采居間合作協(xié)議書(shū)范文
評(píng)論
0/150
提交評(píng)論