版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第9章
網(wǎng)絡(luò)通信《Java程序設(shè)計實(shí)用教程(第3版)》網(wǎng)絡(luò)編程基礎(chǔ)使用URL訪問網(wǎng)絡(luò)資源TCP
Socket通信UDP數(shù)據(jù)報通信第9章
網(wǎng)絡(luò)通信《Java程序設(shè)計實(shí)用教程(第3版)》內(nèi)容和要求:理解URL訪問網(wǎng)絡(luò)資源。掌握TCP
Socket通信和UDP數(shù)據(jù)報通信。重點(diǎn):
TCP
Socket,
UDP
Socket。9.1計算機(jī)網(wǎng)絡(luò)基礎(chǔ)《Java程序設(shè)計實(shí)用教程(第3版)》1.計算機(jī)網(wǎng)絡(luò)與Internet計算機(jī)網(wǎng)絡(luò):是一群具有獨(dú)立功能的計算機(jī)通過設(shè)備及傳輸媒體互聯(lián)起來,在通信軟件的支持下,實(shí)現(xiàn)計算機(jī)間資源共享、信息交換或協(xié)同工作的系統(tǒng)。Internet:是由許多種不同類型、不同規(guī)模的計算機(jī)網(wǎng)絡(luò)和計算機(jī)主機(jī)組成的世界范圍內(nèi)的計算機(jī)網(wǎng)絡(luò)。Internet服務(wù):主要有web瀏覽、電子郵件、文件傳輸、遠(yuǎn)程登錄、即時通信、網(wǎng)絡(luò)電話等等。2.TCP/IP協(xié)議《Java程序設(shè)計實(shí)用教程(第4版)》在計算機(jī)網(wǎng)絡(luò)中,為了雙方在通信過程中能正確理解、接受和執(zhí)行,就要遵守相同的規(guī)定。在通信內(nèi)容、怎樣通信以及何時通信等方面,雙方遵從相互可以接受的一組約定和規(guī)則,這些約定和規(guī)則的集合稱為協(xié)議。網(wǎng)絡(luò)體系結(jié)構(gòu)的概念計算機(jī)網(wǎng)絡(luò)體系機(jī)構(gòu)就是計算機(jī)網(wǎng)絡(luò)各層次及其協(xié)議的集合。高層中層低層高層中層低層
中間節(jié)點(diǎn)物理介質(zhì)《Java程序設(shè)計實(shí)用教程(第3版)》網(wǎng)絡(luò)體系結(jié)構(gòu)參考模型《Java程序設(shè)計實(shí)用教程(第3版)》TCP/IP協(xié)議結(jié)構(gòu)EthernetIPICMPARPRARPTCPUDPDNSSNMP
HTTP
SMTPFTP
TELNET 應(yīng)用層傳輸層網(wǎng)際層網(wǎng)絡(luò)接口層《Java程序設(shè)計實(shí)用教程(第3版)》3.Internet地址《Java程序設(shè)計實(shí)用教程(第4版)》在計算機(jī)網(wǎng)絡(luò)中的每臺主機(jī)都需要唯一的地址標(biāo)識。兩種標(biāo)識方式:IP地址,形如xxx.xxx.xxx.xxx域名系統(tǒng)。例如4.URL(統(tǒng)一資源定位符)《Java程序設(shè)計實(shí)用教程(第4版)》URL是為標(biāo)志Internet上資源位置而設(shè)的一種編碼方式。其格式如下:協(xié)議://主機(jī)[:端口][/文件][#引用]主機(jī)(IP地址/域名)用于定位提供服務(wù)的特定主機(jī);端口:提供服務(wù)的端口號如/index.html5.客戶-服務(wù)器(Client-Server)模式CS模式是指一個應(yīng)用系統(tǒng)被分成邏輯上分離的兩部分:客戶端和服務(wù)器,服務(wù)器提供某種服務(wù)而等待服務(wù)請求達(dá)到;客戶端向指定服務(wù)器發(fā)送服務(wù)請求?!禞ava程序設(shè)計實(shí)用教程(第4版)》NetAssist工具演示9.2使用URL訪問網(wǎng)絡(luò)資源URL和IP地址使用JTabbedPane、JSplitPane和JEditorPane《Java程序設(shè)計實(shí)用教程(第3版)》9.2.1
URL和IP地址《Java程序設(shè)計實(shí)用教程(第3版)》1.URL類public
final
class
URL
implements
java.io.Serializable{public
URL(String
protocol,
String
host,
int
port,
String
filthrows
MalformedURLExceptionpublic
String
toString()public
String
getProtocol()public
int
getPort()public
int
getDefaultPort()public
String
getHost()public
String
getFile()//返回完整URL地址字符串//返回協(xié)議名//返回端口//返回默認(rèn)端口//返回主機(jī)名//返回完整文件名public
final
InputStream
openStream()throwsjava.io.IOException
//使用流獲得URL資源內(nèi)容}9.2.1
URL和IP地址《Java程序設(shè)計實(shí)用教程(第3版)》URL類的功能創(chuàng)建URL對象URL
url2
=
new
URL("");可以指定協(xié)議、主機(jī)、端口、文件名的完整URL地址。獲得URL對象的屬性獲取URL對象的協(xié)議、主機(jī)、端口、文件名等屬性使用流獲得URL資源的內(nèi)容一個URL對象僅僅代表一個網(wǎng)絡(luò)資源,獲取內(nèi)容的操作仍然需要使用流。public
final
InputStream
openStream()
;2.URLConnection類《Java程序設(shè)計實(shí)用教程(第3版)》URLConnection類和URL是配套使用的。如filename表示一個文件名,F(xiàn)ILE表示一個文件對象。URL表示一個網(wǎng)絡(luò)上的文件名,URLConnection表示網(wǎng)絡(luò)上的一個文件對象。通過URLConnection可以獲取指定文件的各種屬性。與直接對FILE可以進(jìn)行文件的讀取不同,對網(wǎng)絡(luò)文件的讀取仍然是通過URL獲取的流來實(shí)現(xiàn)。2.URLConnection類《Java程序設(shè)計實(shí)用教程(第3版)》URLConnection類聲明public
abstract
class
URLConnection{protected
URLConnection(URL
url);//構(gòu)造方法public
URL
getURL()
//返回當(dāng)前連接的URL對象
public
int
getContentLength()//返回資源文件的長度public
String
getContentType()//返回資源文件的類型public
object
getContent()//獲取此URL連接的內(nèi)容public
long
getLastModified()//返回資源文件的最后修改日期}使用URL類的openConnection()方法創(chuàng)建一個
URLConnection對象Public
URLConnection
openConnection()
throwsjava.io.IOException3.InetAddress類《Java程序設(shè)計實(shí)用教程(第3版)》public
class
InetAddress
extends
Object
implements
Serializable{public
static
InetAddress
getByName(String
host)
throwsUnknownHostExceptionpublic
static
InetAddress
getByAddress(String
host,
byte[]addr)
throws
UnknownHostExceptionpublic
static
InetAddress
getLocalHost()throwsUnknownHostException
//返回本地主機(jī)public
String
getHostAddress()public
String
getHostName()//返回IP地址字符串//返回主機(jī)名}此類表示互聯(lián)網(wǎng)協(xié)議(IP)地址。主機(jī)名到IP地址的解析通過使用本地機(jī)器配置信息和網(wǎng)絡(luò)命名服務(wù)(DNS)和網(wǎng)絡(luò)信息服務(wù)(NIS)來實(shí)現(xiàn)。9.2.2使用JTabbedPane、JSplitPane和JEditorPane《Java程序設(shè)計實(shí)用教程(第3版)》·
選項(xiàng)卡窗格public
class
JTabbedPane
extends
JComponent
implementsSerializable,
Accessible,
SwingConstants{public
JTabbedPane()
//構(gòu)造方法public
void
addTab(String
title,Component
comp)//添加頁public
int
getTabCount()public
int
getSelectedIndex()public
void
setSelectedIndex(int
index)//返回頁數(shù)//當(dāng)前選中頁序號//選中第index頁publicvoid
addChangeListener(ChangeListener
l)//注冊選擇事件監(jiān)聽器}2.分割窗格《Java程序設(shè)計實(shí)用教程(第3版)》public
class
JSplitPane
extends
JComponent
implementsAccessible{public
final
static
int
VERTICAL_SPLIT
=
0;
//垂直分割常量public
final
static
int
HORIZONTAL_SPLIT
=
1;
//水平分割常量public
JSplitPane()public
JSplitPane(int
orientation)//創(chuàng)建分割窗格//指定分割方向常量public
void
setDividerLocation(int
location)//設(shè)置分割條位置(單位是像素)}3.編輯器窗格《Java程序設(shè)計實(shí)用教程(第3版)》public
class
JEditorPane
extends
JTextComponent{public
JEditorPane()
//構(gòu)造方法public
JEditorPane(URL
initialPage)throwsIOException
//指定初始頁的URLpublic
JEditorPane(String
url)
throws
IOException}可編輯各種內(nèi)容的文本組件。能有效地將其形態(tài)變換為適當(dāng)?shù)奈谋揪庉嬈鞣N類。text/plain純文本。text/html
HTML文本,對動態(tài)腳本支持不好,支持HTML3.2。text/rtf
RTF文本。提供了對多樣化文本格式(Rich
TextFormat)的有限支持?!纠?.1】查看指定URL的Web頁編輯器及HTML文檔。(1)readFrom方法中完成內(nèi)容讀取并顯示在
JTextArea;(2)從本地讀取和網(wǎng)絡(luò)讀取內(nèi)容的操作相同(3)在tab中切換時產(chǎn)生
stateChanged事件;《Java程序設(shè)計實(shí)用教程(第3版)》9.3
TCP
Socket通信《Java程序設(shè)計實(shí)用教程(第3版)》TCP
Socket通信原理Java的Socket通信10.2.1
TCP
Socket通信原理IP協(xié)議IPv4數(shù)據(jù)報頭格式互聯(lián)網(wǎng)上每臺電腦都分配一個IP地址,IPV4地址不夠用,出現(xiàn)很多臨時解決方法,最終是需要IPV6《Java程序設(shè)計實(shí)用教程(第3版)》2.傳輸層協(xié)議用戶數(shù)據(jù)報協(xié)議(UDP)和傳輸控制協(xié)議(TCP)協(xié)議通過端口指定服務(wù)3.
基于TCP連接的Socket通信IP地址可以唯一標(biāo)識計算機(jī),使用傳輸層的端口號來區(qū)分同一臺計算機(jī)上的不同應(yīng)用。端口只在本計算機(jī)有意義(局部);《Java程序設(shè)計實(shí)用教程(第3版)》TCP協(xié)議格式《Java程序設(shè)計實(shí)用教程(第3版)》TCP有限狀態(tài)機(jī)《Java程序設(shè)計實(shí)用教程(第3版)》10.2.2
Java的TCP
Socket通信·
Java的Socket通信流程getInputStreamgetOutputStream《Java程序設(shè)計實(shí)用教程(第3版)》2.ServerSocket類和Socket類《Java程序設(shè)計實(shí)用教程(第3版)》public
class
ServerSocket
extends
Object{public
ServerSocket(int
port);//構(gòu)造方法,指定端口號public
Socket
accept();//等待接收客戶端的連接請求,連接成功后返回一個已連接的Socket對象public
void
close();//停止等候客戶端的連接請求}此類實(shí)現(xiàn)服務(wù)器套接字。服務(wù)器套接字等待請求通過網(wǎng)絡(luò)傳入Socket類public
class
Socket
extends
Object{
public
Socket(String
host,int
port)//構(gòu)造方法,指定主機(jī)名和端口號public
InputStream
getInputStream();//返回TCP連接提供的字節(jié)輸入流public
OutputStream
getOutputStream();//返回
TCP連接提供有字節(jié)輸出流public
synchronized
void
close();
//關(guān)閉TCP連接}此類實(shí)現(xiàn)客戶端套接字【例】最簡單的TCP
socket例子,服務(wù)器在8885端口等待連接,客戶端連接后,服務(wù)器給客戶發(fā)送“歡迎”信息《Java程序設(shè)計實(shí)用教程(第3版)》Socket類【例9.2】采用TCP
Socket通信實(shí)現(xiàn)的點(diǎn)對點(diǎn)聊天。先執(zhí)行server程序,并且確認(rèn)2001端口處于Listening狀從一個端口可以獲得輸入流和輸出流,所以對一個socket既可以讀取,又可以寫入操作?!禞ava程序設(shè)計實(shí)用教程(第3版)》3.提供多客戶的Socket通信服務(wù)【例9.3】網(wǎng)絡(luò)發(fā)牌程序
(1)服務(wù)器端(2)客戶端(1)程序執(zhí)行的順序必須是East(2001)->South(2002)->
West(2003)->North(2004),由服務(wù)端的處理限制了順序?!禞ava程序設(shè)計實(shí)用教程(第3版)》單端口為多用戶提供服務(wù)例子以發(fā)撲克牌為例,服務(wù)器實(shí)現(xiàn)發(fā)牌功能,每個客戶端連接服務(wù)器后,服務(wù)器啟動一個線程來處理這個請求?!禞ava程序設(shè)計實(shí)用教程(第3版)》【例9.4】多客戶的TCP
Socket通信?!禞ava程序設(shè)計實(shí)用教程(第3版)》9.4
UDP數(shù)據(jù)報通信UDP數(shù)據(jù)報UDP組播數(shù)據(jù)報UDP是傳輸層的簡單協(xié)議,只增加了應(yīng)用程序的多到處理和簡單的錯誤校驗(yàn)功能。不能分段處理,沒有MF字段,數(shù)據(jù)重組需要由應(yīng)用層實(shí)現(xiàn)UDP通信需要DatagramPacket和DatagramSocket兩個類的支持。UDP通信不需要建立連接?!禞ava程序設(shè)計實(shí)用教程(第3版)》10.3.1
UDP數(shù)據(jù)報《Java程序設(shè)計實(shí)用教程(第3版)》·
數(shù)據(jù)報包功能(1)將用戶數(shù)據(jù)封裝成一個UDP報文,準(zhǔn)備發(fā)送。(2)創(chuàng)建一個UDP報文,準(zhǔn)備接收。public
final
class
DatagramPacket
extends
Object{public
DatagramPacket(byte[]
buf,
int
length,
InetAddress//創(chuàng)建發(fā)address,int
port)送數(shù)據(jù)報public
DatagramPacket(byte[]buf,int
length)數(shù)據(jù)報//創(chuàng)建接收public
byte[]
getData()public
int
getLength()public
InetAddress
getAddress()public
int
getPort()//從緩沖區(qū)中返回數(shù)據(jù)//返回數(shù)據(jù)報的長度//返回遠(yuǎn)程主機(jī)IP地址//返回遠(yuǎn)程主機(jī)的端口號public
void
setAddress(InetAddress
iaddr)
//發(fā)往的主機(jī)的IP地址public
void
setPort(int
iport)
//發(fā)往的遠(yuǎn)程主機(jī)上的端口}2.數(shù)據(jù)報套接字功能:用于服務(wù)的創(chuàng)建UDP端口,通過端口發(fā)送或者接受UDP數(shù)據(jù)包。public
class
DatagramSocket
extends
Object{public
DatagramSocket()
throws
SocketException//創(chuàng)建Socket,綁定一可用端口public
DatagramSocket(int
port)
throws
SocketException//port指定端口public
void
send(DatagramPacket
pack)
throws
IOException//發(fā)送pack數(shù)據(jù)報包public
void
receive(DatagramPacket
pack)throwsIOException
//接收數(shù)據(jù)報包存于p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨境包裹運(yùn)輸協(xié)議2025
- 朝陽單招考試題目及答案
- 礦山救護(hù)工試題及答案
- 2025-2026九年級道德與法治上學(xué)期期末測試
- 衛(wèi)生院應(yīng)急值守管理制度
- 中學(xué)生教室衛(wèi)生管理制度
- 落實(shí)美發(fā)店衛(wèi)生管理制度
- 行車室衛(wèi)生管理制度
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院廉政管理制度
- 寢室值日衛(wèi)生制度
- 四川省遂寧市2026屆高三上學(xué)期一診考試英語試卷(含答案無聽力音頻有聽力原文)
- 福建省寧德市2025-2026學(xué)年高三上學(xué)期期末考試語文試題(含答案)
- 建筑施工行業(yè)2026年春節(jié)節(jié)前全員安全教育培訓(xùn)
- 2026屆高考語文復(fù)習(xí):小說人物形象復(fù)習(xí)
- 2026及未來5年中國防病毒網(wǎng)關(guān)行業(yè)市場全景調(diào)查及發(fā)展前景研判報告
- 2026年山東省煙草專賣局(公司)高校畢業(yè)生招聘流程筆試備考試題及答案解析
- 八年級下冊《昆蟲記》核心閱讀思考題(附答案解析)
- 煤礦復(fù)產(chǎn)安全培訓(xùn)課件
- 2025年中職藝術(shù)設(shè)計(設(shè)計理論)試題及答案
- 2026屆高考?xì)v史二輪突破復(fù)習(xí):高考中外歷史綱要(上下兩冊)必考??贾R點(diǎn)
- 鐵路交通法律法規(guī)課件
評論
0/150
提交評論