版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JavaSE知識(shí)圖解JAVA發(fā)展歷程JAVA環(huán)境搭建基礎(chǔ)程序設(shè)計(jì)數(shù)據(jù)類型運(yùn)算符流程控制 數(shù)組面象編程類和對(duì)象屬性方法設(shè)計(jì)模式接口三大特性應(yīng)用程序開發(fā)JDBC集合異常處理類庫(kù)多線程IO反射網(wǎng)絡(luò)連接OracleJAVA新特性Eclipse使用泛型枚舉裝箱/拆箱可變參數(shù)Annotation主要內(nèi)容網(wǎng)絡(luò)編程概述通訊要素IP和端網(wǎng)絡(luò)通信協(xié)議InetAddress類TCP網(wǎng)絡(luò)通信UDP網(wǎng)絡(luò)通信URL編程網(wǎng)絡(luò)編程概述Java是Internet
上的語(yǔ)言,它從語(yǔ)言級(jí)上提供了對(duì)網(wǎng)絡(luò)應(yīng)用程序的支持,程序員能夠很容易開發(fā)常見的網(wǎng)絡(luò)應(yīng)用程序。Java提供的網(wǎng)絡(luò)類庫(kù),可以實(shí)現(xiàn)無(wú)痛的網(wǎng)絡(luò)連接,聯(lián)網(wǎng)的底層細(xì)節(jié)被隱藏在Java
的本機(jī)安裝系統(tǒng)里,由JVM
進(jìn)行控制。并且Java
實(shí)現(xiàn)了一個(gè)跨平臺(tái)的網(wǎng)絡(luò)庫(kù),程序員面對(duì)的是一個(gè)
的網(wǎng)絡(luò)編程環(huán)境。網(wǎng)絡(luò)基礎(chǔ)計(jì)算機(jī)網(wǎng)絡(luò):把分布在不同地理區(qū)域的計(jì)算機(jī)與專門的外部設(shè)備用通信線路互連成一個(gè)規(guī)模大、功能強(qiáng)的網(wǎng)絡(luò)系統(tǒng),從而使眾多的計(jì)算機(jī)可以方便地互相傳遞信息、共享硬件、源。網(wǎng)絡(luò)編程的目的:、數(shù)據(jù)信息等資直接或間接地通過網(wǎng)絡(luò)協(xié)議與其它計(jì)算機(jī)進(jìn)行通訊。網(wǎng)絡(luò)編程中有兩個(gè)主要的問題:如何準(zhǔn)確地定位網(wǎng)絡(luò)上一臺(tái)或多臺(tái)主機(jī)找到主機(jī)后如何可靠高效地進(jìn)行數(shù)據(jù)傳輸。地球村如何實(shí)現(xiàn)網(wǎng)絡(luò)中的主機(jī)互相通信:通信雙方地址一定的規(guī)則(有兩套參考模型)OSI參考模型:模型過于理想化,未能在因特網(wǎng)上進(jìn)行廣泛推廣TCP/IP參考模型(或TCP/IP協(xié)議):事實(shí)上的國(guó)際標(biāo)準(zhǔn)。網(wǎng)絡(luò)基礎(chǔ)OSI參考模型TCP/IP參考模型TCP/IP參考模型各層對(duì)應(yīng)協(xié)議應(yīng)用層應(yīng)用層HTTP、ftp、net、DNS…表示層會(huì)話層傳輸層傳輸層TCP、UDP、…網(wǎng)絡(luò)層網(wǎng)絡(luò)層IP、ICMP、ARP…數(shù)據(jù)鏈路層物理+數(shù)據(jù)鏈路層Link物理層網(wǎng)絡(luò)通信協(xié)議數(shù)據(jù)封裝數(shù)據(jù)拆封通訊要素1:IP
和端IP
地址:InetAddress唯一的標(biāo)識(shí)Internet
上的計(jì)算機(jī)本地回環(huán)地址(hostAddress):localhost不易主機(jī)名(hostName):端
標(biāo)識(shí)正在計(jì)算機(jī)上運(yùn)行的進(jìn)程(程序)不同的進(jìn)程有不同的端被規(guī)定為一個(gè)
16位的整數(shù)
0~65535。其中,0~1023被預(yù)先定義的服務(wù)通信占用(如MySql占用端口3306,http占用端口80等)。除非 需要 這些特定服務(wù),否則,就應(yīng)該使用1024~65535
這些端口中的某一個(gè)進(jìn)行通信,以免發(fā)生端口
。與IP地址的組合得出一個(gè)網(wǎng)絡(luò)套接字。端89988998MSNMSN789878988998InetAddress類Internet上的主機(jī)有兩種方式表示地址:(hostName):IP
地址(hostAddress):10InetAddress類主要表示IP地址,兩個(gè)子類:Inet4Address、Inet6Address。InetAddress
類對(duì)象含有一個(gè)
Internet
主機(jī)地址的 和IP地址:容易和10。,當(dāng)在連接網(wǎng)絡(luò)時(shí)輸入一個(gè)主機(jī)的 后,域名服務(wù)器(DNS)負(fù)責(zé)將轉(zhuǎn)化成IP地址,這樣才能和主機(jī)建立連接。
-------
解析DNS網(wǎng)絡(luò)服務(wù)器C:\Windows\System32\drivers\etc\hosts先找本機(jī)hosts,是否有輸入的地址,沒有的話,再通過DNS服務(wù)器,找主機(jī)。InetAdress類InetAddress類沒有提供公共的構(gòu)造器,而是提供了如下兩個(gè)靜態(tài)方法來(lái)獲取InetAddress實(shí)例InetAddress提供了如下幾個(gè)常用的方法InetAdress
代碼示例通訊要素2:網(wǎng)絡(luò)通信協(xié)議網(wǎng)絡(luò)通信協(xié)議計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)現(xiàn)通信必須有一些約定,即通信協(xié)議,對(duì)速率、傳輸代碼、代碼結(jié)構(gòu)、傳輸控制步驟、出錯(cuò)控制等制定標(biāo)準(zhǔn)。通信協(xié)議分層的思想由于結(jié)點(diǎn)之間聯(lián)系很復(fù)雜,在制定協(xié)議時(shí),把復(fù)雜成份分解成一些簡(jiǎn)單的成份,再將它們復(fù)合起來(lái)。最常用的復(fù)合方式是層次方式,即同層間可以通信、上一層可以調(diào)用下一層,而與再下一層不。各層互不影響,利于系統(tǒng)的開發(fā)和擴(kuò)展。TCP/IP協(xié)議簇傳輸層協(xié)議中有兩個(gè)非常重要的協(xié)議:傳輸控制協(xié)議TCP(Transmission
Control
Protocol)用戶數(shù)據(jù)報(bào)協(xié)議UDP(User
Datagram
Protocol)。TCP/IP以其兩個(gè)主要協(xié)議:傳輸控制協(xié)議(TCP)和網(wǎng)絡(luò)互聯(lián)協(xié)議(IP)而得名,實(shí)際上是一組協(xié)議,包括多個(gè)具有不同功能且互為關(guān)聯(lián)的協(xié)議。IP(Internet
Protocol)協(xié)議是網(wǎng)絡(luò)層的主要協(xié)議,支持網(wǎng)間互連的數(shù)據(jù)通信。TCP/IP協(xié)議模型從更實(shí)用的角度出發(fā),形成了高效的四層體系結(jié)構(gòu),即物理鏈路層、IP層、傳輸層和應(yīng)用層。TCP
和UDPTCP協(xié)議:使用TCP協(xié)議前,須先建立TCP連接,形成傳輸數(shù)據(jù)通道傳輸前,采用“三次握手”方式,是可靠的TCP協(xié)議進(jìn)行通信的兩個(gè)應(yīng)用進(jìn)程:客戶端、服務(wù)端在連接中可進(jìn)行大數(shù)據(jù)量的傳輸已建立的連接,效率低傳輸完畢,需UDP協(xié)議:將數(shù)據(jù)、源、目的封裝成數(shù)據(jù)包,不需要建立連接每個(gè)數(shù)據(jù)報(bào)的大小限制在64K內(nèi)因無(wú)需連接,故是不可靠的發(fā)送數(shù)據(jù)結(jié)束時(shí)無(wú)需 資源,速度快利用套接字(Socket)開發(fā)網(wǎng)絡(luò)應(yīng)用程序早已被廣泛的采用,以至于成為事實(shí)上的標(biāo)準(zhǔn)。通信的兩端都要有Socket,是兩臺(tái)機(jī)器間通信的端點(diǎn)網(wǎng)絡(luò)通信其實(shí)就是Socket間的通信。Socket允許程序把網(wǎng)絡(luò)連接當(dāng)成一個(gè)流,數(shù)據(jù)在兩個(gè)Socket間通過IO傳輸。
一般主動(dòng)發(fā)起通信的應(yīng)用程序?qū)倏蛻舳耍却ㄐ耪?qǐng)求的為服務(wù)端SocketJava語(yǔ)言的基于套接字編程分為服務(wù)端編程和客戶端編程,其通信模型
:
Server
ServerSocket(int
port)Socket
accept()OutputStreamSocker.getOutputStream()InputStreamSocker.gerInputSream()Socket.close()
Client
Socket(InetAddressaddress,int
port)OutputStreamSocket.getOutputStream()InputStreamSocket.getInputStream()Socker.close()基于TCP的Socket通信基于Socket的TCP編程Socket類的常用方法方能InetAddress
getLocalAddress()返回對(duì)方Socket中的IP的InetAddress對(duì)象int
getLocalPort()返回本地Socket中的端InetAddress
getInetAddress()返回對(duì)方Socket中IP地址int
getPort()返回對(duì)方Socket中的端void
close()
throwsIOException關(guān)閉Socket,不可在以后的網(wǎng)絡(luò)連接中使用,除非創(chuàng)建新的套接字InputStream
getInputStream()throws
IOException獲取與Socket相關(guān)聯(lián)的字節(jié)輸入流,用于從Socket中讀數(shù)據(jù)。OutputStreamgetOutputStream()throws
IOException獲取與Socket相關(guān)聯(lián)的字節(jié)輸出流,用于向Socket中寫數(shù)據(jù)。ServerSocket類的常用方法方能Socket
accept()
throwsIOException等待客戶端的連接請(qǐng)求,返回與該客戶端進(jìn)行通信用的Socket對(duì)象void
setSoTimeout(int
timeout)throws
SocketException設(shè)置accept()方法等待連接的時(shí)間為timeout毫秒。若時(shí)間已到,還沒有客戶端連接,則拋出InterruptedIOException異常,accept()方法不再阻塞,該
Socket可繼續(xù)使用。若timeout值為0,則表示accept()
等待。該方法必須在Socket創(chuàng)建后,在accept()之前調(diào)用才有效。void
close()throws
IOException關(guān)閉
SocketInetAddress
getInetAddress()返回此服務(wù)器套接字的本地地址int
getLocalPort()返回此套接字在其上
的端SocketAddressgetLocalSocketAddress()返回此套接字綁定的端點(diǎn)的地址基于Socket的TCP編程客戶端Socket的工作過程包含以下四個(gè)基本的步驟:創(chuàng)建Socket:根據(jù)指定服務(wù)端的IP
地址或端
構(gòu)造
Socket
類對(duì)象。若服務(wù)器端響應(yīng),則建立客戶端到服務(wù)器的通信線路。若連接失敗,會(huì)出現(xiàn)異常。打開連接到Socket的輸入/出流:使用getInputStream()方法獲得輸入流,使用getOutputStream()方法獲得輸出流,進(jìn)行數(shù)據(jù)傳輸按照一定的協(xié)議對(duì)Socket
進(jìn)行讀/寫操作:通過輸入流服務(wù)器放入線路的信息(但不能
自己放入線路的信息),通過輸出流將信息寫入線程。關(guān)閉Socket:斷開客戶端到服務(wù)器的連接,線路客戶端創(chuàng)建Socket對(duì)象客戶端程序可以使用Socket類創(chuàng)建對(duì)象,創(chuàng)建的同時(shí)會(huì)自動(dòng)向服務(wù)器方發(fā)起連接。Socket的構(gòu)造方法是:Socket(String
host,int
port)throws
UnknownHostException,IOException:向服務(wù)器(
是host。端
為port)發(fā)起TCP連接,若成功,則創(chuàng)
建Socket對(duì)象,否則拋出異常。Socket(InetAddress
address,int
port)throws
IOException:根據(jù)InetAddress對(duì)象所表示的IP地址以及端
port發(fā)起連接??蛻舳私ocketAtClient對(duì)象的過程就是向服務(wù)器發(fā)出套接字連接請(qǐng)求Socket
s
=
new
Socket(“65”,9999);OutputStream
out
=
s.getOutputStream();out.write(“
o”.getBytes());s.close();服務(wù)器程序的工作過程包含以下四個(gè)基本的步驟:調(diào)用ServerSocket(int
port)
:創(chuàng)建一個(gè)服務(wù)器端套接字,并綁定到指定端口上。用于 客戶端的請(qǐng)求。調(diào)用accept():
連接請(qǐng)求,如果客戶端請(qǐng)求連接,則接受連接,返回通信套接字對(duì)象。調(diào)用該Socket類對(duì)象的getOutputStream()和getInputStream():獲取輸出流和輸入流,開始網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送和接收。關(guān)閉ServerSocket和Socket對(duì)象:客戶端 結(jié)束,關(guān)閉通信套接字?;赟ocket的TCP編程服務(wù)器建立ServerSocket
對(duì)象ServerSocket
對(duì)象負(fù)責(zé)等待客戶端請(qǐng)求建立套接字連接,類
似郵局某個(gè)窗口中的業(yè)務(wù)員。也就是說,服務(wù)器必須事先
建立一個(gè)等待客戶請(qǐng)求建立套接字連接的ServerSocket對(duì)象。所謂“接收”客戶的套接字請(qǐng)求,就是accept()方一個(gè)Socket
對(duì)象ServerSocket
ss
=
new
ServerSocket(9999);Socket
s
=
ss.accept
();InputStreamin
=
s.getInputStream();byte[]
buf
=
new
byte[1024];int
num
=
in.read(buf);String
str
=
new
String(buf,0,num);System.out.println(s.getInetAddress().toString()+”:”+str);s.close();ss.close();返回例題客戶端發(fā)送內(nèi)容給服務(wù)端,服務(wù)端將內(nèi)容打印到控制臺(tái)上??蛻舳税l(fā)送內(nèi)容給服務(wù)端,服務(wù)端給予反饋。從客戶端發(fā)送文件給服務(wù)端,服務(wù)端保存到本地。并返回“發(fā)送成功”給客戶端。并關(guān)閉相應(yīng)的連接。練習(xí)并發(fā)送給客戶端,客戶端保1.服務(wù)端存 到本地2.客戶端給服務(wù)端發(fā)送文本,服務(wù)端會(huì)將文本轉(zhuǎn)成大寫在返回給客戶端??蛻舳恕?wù)端客戶端:自定義瀏覽器服務(wù)端:自定義Tomcat服務(wù)器UDP網(wǎng)絡(luò)通信類DatagramSocket
和DatagramPacket
實(shí)現(xiàn)了基于UDP
協(xié)議網(wǎng)絡(luò)程序。UDP數(shù)據(jù)報(bào)通過數(shù)據(jù)報(bào)套接字DatagramSocket
發(fā)送和接收,系統(tǒng)不保證UDP數(shù)據(jù)報(bào)一定能夠安全送到目的地,也不能確定什么時(shí)候可以抵達(dá)。DatagramPacket
對(duì)象封裝了UDP數(shù)據(jù)報(bào),在數(shù)據(jù)報(bào)中包含了發(fā)送端的IP地址和端以及接收端的IP地址和端。UDP協(xié)議中每個(gè)數(shù)據(jù)報(bào)都給出了完整的地址信息,因此無(wú)須建立發(fā)送方和接收方的連接流程:DatagramSocket與DatagramPacket建立發(fā)送端,接收端建立數(shù)據(jù)包調(diào)用Socket的發(fā)送、接收方法關(guān)閉Socket發(fā)送端與接收端是兩個(gè)獨(dú)立的運(yùn)行程序UDP網(wǎng)絡(luò)通信發(fā)送端DatagramSocket
ds
=
new
DatagramSocket();byte[]
by
=
“
”.getBytes();DatagramPacket
dp
=
newDatagramPacket(by,0,by.length,InetAddress.getByName(“”),10000);ds.send(dp);ds.close();接收端在接收端,要指定
的端口。DatagramSocket
ds
=
new
DatagramSocket(10000);byte[]
by
=
new
byte[1024];DatagramPacket
dp
=
new
DatagramPacket(by,by.length);ds.receive(dp);String
str
=
new
String(dp.getData(),0,dp.getLength());System.out.println(str+"--"+dp.getAddress());ds.close();URL編程URL(Uniform
Resource
Locator): 資源定位符,它表示Internet
上某一資源的地址。通過URL
可以
Internet上的各種網(wǎng)絡(luò)資源,比如最常見的www,ftp
站點(diǎn)。瀏覽器通過解析給定的URL
可以在網(wǎng)絡(luò)上查找相應(yīng)的文件或其他資源。>/<文件名>URL的基本結(jié)構(gòu)由5部分組成:<傳輸協(xié)議>://<主機(jī)名>:<端例如:URL編程為了表示URL,
中實(shí)現(xiàn)了類URL。的構(gòu)造器來(lái)初始化一個(gè)URL
對(duì)象:可以通過下面public
URL
(Stringspec):通過一個(gè)表示URL地址的字符串可以構(gòu)造一個(gè)URL對(duì)象。例如:URL
url=new
URL("
.
/");public
URL(URL
context,Stringspec):通過基URL
和相對(duì)URL
構(gòu)造一個(gè)URL
對(duì)象。例如:URL
downloadUrl=newURL(url,“download.html")public
URL(String
protocol,
String
host,
String
file);例如:new
URL("http"," ",
“download.
html");public
URL(String
protocol,
String
host,
int
port,
String
file);
例如:
URL
gamelan
=
new
URL("http",
" ",
80,“download.html");URL編程類URL的構(gòu)造方法都拋出非運(yùn)行時(shí)異常,必須要對(duì)這一異常進(jìn)行處理,通常是用try-catch
語(yǔ)句進(jìn)行捕獲。一個(gè)URL對(duì)象生成后,其屬性是不能被改變的,但可以通過它給定的方法來(lái)獲取這些屬性:public
String
getProtocol(
)public
String
getHost(
)public
String
getPort(
)public
String
getPath(
)public
String
getFile(
)public
String
getRef(
)public
String
getQuery(
)獲取該URL的協(xié)議名獲取該URL的主機(jī)名獲取該URL的端獲取該URL的文件路徑獲取該URL的文件名獲取該URL在文件中的相對(duì)位置獲取該URL的查詢名URL編程URLurl=
newURL("
");System.out.println("getProtocol()
:"+url.getProtocol());System.out.println("getHost()
:"+url.getHost());System.out.println("getPort()
:"+url.getPort());System.out.println("getPath()
:"+url.getPath());System.out.println("getFile()
:"+url.getFile());System.out.println("getQuery()
:"+url.getQuery());針對(duì)HTTP協(xié)議的URLConnection類URL的方法
openStream():能從網(wǎng)絡(luò)上 數(shù)據(jù)若希望輸出數(shù)據(jù),例如向服務(wù)器端的CGI(公共網(wǎng)關(guān)接口-Common
Gateway
Interface-的簡(jiǎn)稱,是用戶瀏覽器和服務(wù)器端的應(yīng)用程序進(jìn)行連接的接口)程序發(fā)送一些數(shù)據(jù),則必須先與URL建立連接,然后才能對(duì)其進(jìn)行讀寫,此時(shí)需要使用URLConnection
。URLConnection:表示到URL所
的 對(duì)象的連接。當(dāng)與一個(gè)URL建立連接時(shí),首先要在一個(gè)URL
對(duì)象上通過方法openConnection()
生成對(duì)應(yīng)的URLConnection
對(duì)象。如果連接過程失敗,將產(chǎn)生IOException.URL
netchinaren
=
new
URL("http
/index.shtml");URLConnectonn
u
=
netchinaren.openConnection();URLConnection類通過URLConnection對(duì)象獲取的輸入流和輸出流,即可以與
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)特種花紋帶市場(chǎng)調(diào)查研究報(bào)告
- 2025至2031年中國(guó)單面毛皮機(jī)針筒行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國(guó)強(qiáng)磁設(shè)備數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025版砂石場(chǎng)安全生產(chǎn)承包與設(shè)備維護(hù)服務(wù)合同3篇
- 二零二五年度兒童房裝修合同書(安全環(huán)保主題)3篇
- 二零二五版環(huán)保園區(qū)物業(yè)管理服務(wù)委托合同范本3篇
- 二零二五年度個(gè)人消費(fèi)信貸借款協(xié)議2篇
- 二零二五年度企業(yè)設(shè)備租賃融資合同規(guī)范文本4篇
- 二零二五年度科技館食堂餐飲承包經(jīng)營(yíng)協(xié)議3篇
- 2025年鋼材市場(chǎng)交易風(fēng)險(xiǎn)管理合同范本
- 江蘇中國(guó)中煤能源集團(tuán)有限公司江蘇分公司2025屆高校畢業(yè)生第二次招聘6人筆試歷年參考題庫(kù)附帶答案詳解
- 【語(yǔ)文】第23課《“蛟龍”探海》課件 2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 北師版七年級(jí)數(shù)學(xué)下冊(cè)第二章測(cè)試題及答案
- 加強(qiáng)教師隊(duì)伍建設(shè)教師領(lǐng)域?qū)W習(xí)二十屆三中全會(huì)精神專題課
- 2025警察公安派出所年終總結(jié)工作匯報(bào)
- 2024-2025學(xué)年人教版數(shù)學(xué)七年級(jí)上冊(cè)期末復(fù)習(xí)卷(含答案)
- 機(jī)動(dòng)車檢測(cè)站新?lián)Q版20241124質(zhì)量管理手冊(cè)
- 2024年決戰(zhàn)行測(cè)5000題言語(yǔ)理解與表達(dá)(培優(yōu)b卷)
- 四年級(jí)數(shù)學(xué)上冊(cè)人教版24秋《小學(xué)學(xué)霸單元期末標(biāo)準(zhǔn)卷》考前專項(xiàng)沖刺訓(xùn)練
- 中國(guó)游戲發(fā)展史課件
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
評(píng)論
0/150
提交評(píng)論