20165330 2017-2018-2 《Java程序設計》第9周學習總結
阿新 • • 發佈:2018-04-29
odin 沒有 建立 解析 col 代碼 close RM 請求
課本知識總結
第十三章 Java網絡編程
- URL類
- URL類是java.net包中的一個重要的類
- 一個URL對象包含的三個基本信息:協議、地址和資源
- 協議:必須是URL對象所在的Java虛擬機支持的協議,常用的有:Http、Ftp、File協議,由參數protocol指定
- 地址:必須是能連接的有效IP地址或域名,由參數host指定
- 資源:可以是主機上的任何一個文件,由參數file指定
- 構造方法
- public URL (String spec) throws MalformedURLException
- public URL(String protocol,String host,String file) throws MalformedURLException
- 調用InputStream openStream()方法返回一個輸入流
- InetAddress類
- Internet上主機表示地址的兩種方式
- 域名
- IP地址
- 獲取地址
- 獲取Internet上主機地址:getByName(String s)
- 獲取本地機地址:getLocalHost()
- 套接字
- 是基於TCP協議的網絡通信
- 客戶端套接字
- 對象建立方法:使用Socket類
- Socket構造方法:Socket(String host,int port)
- ServerSocket對象與服務器端套接字
- 構造方法:ServerSocket(int port)
- 使用方法accept()將客戶端的套接字和服務器端的套接字連接起來
try{ Socket sc = serverForClient.accept();
}
catch(IOException e) {}
- 通信完畢後,套接字使用close()方法關閉套接字連接
- 多線程技術
- 服務器端收到一個客戶端的套接字時,就會啟動一個專門為該客戶服務的線程
- 服務器端收到一個客戶端的套接字時,就會啟動一個專門為該客戶服務的線程
- 套接字通信基本原則
- 服務器應當啟動一個專門的線程,在該線程中和客戶的套接字建立連接
- 由於套接字的輸入流在讀取信息時可能發生阻塞,客戶端和服務器端都需要在一個單獨的線程中讀取信息
- UPD數據報
- 基於UPD通信的基本模式
- 將數據打包發往目的地
- 接收發來的數據包並查看內容
- 發送數據包
- 打包:使用DatagramPacket類
DatagramPacket(byte data[],int length,InetAddtress address,int port)
DatagramPack(byte data[],int offset,int length,InetAddtress address,int port)
- 發送:使用構造方法DatagramSocket()創建一個對象
- 接收數據包
- 使用構造方法DatagramSocket(int port)創建一個對象
- 使用方法receive(DatagramPacket pack)接收數據包
- 廣播數據報
- A類地址:a<128,則b.c.d表示主機
- B類地址:128<=a<192,則a.b表示網絡地址,c.d表示主機地址
- C類地址:a>=192,a.b.c表示網絡地址,d表示主機地址
- D類地址:224.0.0.0~224.255.255.255是保留地址
- 要廣播或接收廣播的主機都必須加入到同一個D類地址
- RMI是一種分布式技術,使用RMI可以讓一個虛擬機(JVM)上的應用程序請求調用位於網絡上另一處JVM上的對象方法
遇到的問題及解決方法
在運行本章第一個代碼時出現
解決方法:將兩個程序分別打包在同一文件夾下,通過輸入
javac -encoding gbk Example13_1.java
,然後成功編譯並運行。
代碼托管
上周錯題總結
-
解析:
-
解析:當main方法中沒有創建其他的線程,main方法返回時,JVM就會結束Java應用程序;當main方法中創建了其他線程,要等到所有線程都結束,JVM才會結束Java應用程序
-
解析:C項:先前的實體會成為“垃圾”,並且不會被垃圾收集器收集。D項:當線程進入死亡狀態後,線程就還可以調用isAlive()方法,並且返回值為false。
20165330 2017-2018-2 《Java程序設計》第9周學習總結