標籤:info 原因 輸入 NPU statistic 主機地址 子類 amp 要求
20165228 2017-2018-2 《Java程式設計》第9周學習總結教材學習內容總結
- URL類是java.net包中的一個重要的類,URL的執行個體封裝著一個統一資源定位器(Uniform Resource Locator),使用URL建立對象的應用程式稱作用戶端程式
- URL對象最基本的資訊:協議、地址、資源
- 建立一個URL對象
public URL(String spec) throws MalformedURLException public URL(String protocol, String host,String file) throws MalformedURLException
InputStream openStream()
返回一個輸入資料流,該輸入資料流指向URL對象所包含的資源
- Internet上的主機的兩種方式表示地址:網域名稱、IP地址
- 擷取地址
- Internet上主機的地址:
1.InetAddress類的靜態方法getByName(String s);
2.獲得一個InetAddress對象,該對象含有主機地址的網域名稱和IP地址
- 擷取本地機的地址:通過InetAddress類的靜態方法getLocalHost()
- 通訊端:IP地址標識Internet上的電腦,連接埠號碼標識正在電腦上啟動並執行進程(程式)。連接埠號碼被規定為一個16位的0~65535之間的整數,連接埠號碼與IP地址的組合得出一個網路通訊端。當兩個程式需要通訊時,它們可以通過使用Socket類建立通訊端對象並串連在一起。
-
建立串連到伺服器的通訊端對象:
try{ Socket mysocket=new Socket(“http://192.168.0.78”,1880); }catch(IOException e) { }
- mysocket相關的方法
- getInputStream()獲得一個輸入資料流
- getOutputStream()獲得一個輸出資料流
- 用getInputStream()得到的輸入資料流接到另一個DataInputStream資料流上
- 用getOutputStream()得到的輸出資料流接到另一個DataOutputStream資料流上
-
伺服器必須建立一個ServerSocket對象,該對象通過將用戶端的通訊端對象和伺服器端的一個通訊端對象串連起來,從而達到串連的目的
try{ ServerSocket serverForClient =new ServerSocket(2010); } catch(IOException e){ }
- accept()將客戶的通訊端和伺服器端的通訊端串連起來:
···
try{ Socket sc= serverForClient .accept();
}
catch(IOException e){}
···
- 接收客戶的通訊端串連:accept()方法會返回一個和用戶端Socket對象相串連的Socket對象
- 用戶端的通訊端獲得的輸入\輸出資料流和伺服器端的通訊端獲得的輸出\輸入資料流互相串連.
-
使用Socket類不帶參數的構造方法Socket()建立一個通訊端對象,該對象需調用
public void connect(SocketAddress endpoint) throws IOException
- 請求和參數SocketAddress指定地址的通訊端建立串連
-
為了使用connect方法,可以使用SocketAddress的子類InetSocketAddress建立一個對象,InetSocketAddress的構造方法是:
InetSocketAddress(InetAddress addr, int port)
- 基於UDP通訊的基本模式是:
1.將資料打包,稱為資料包(好比將信件裝入信封一樣),然後將資料包發往目的地。
2.接受別人發來的資料包(好比接收信封一樣),然後查看資料包中的內容。
- 用DatagramPacket類建立一個對象,稱為資料包
-
DatagramPacket的以下兩個構造方法建立待發送的資料包:
DatagramPacket(byte data[],int length,InetAddtress address,int port)
DatagramPack(byte data[],int offset,int length,InetAddtress address,int port)
-
用DatagramSocket類的不帶參數的構造方法:DatagramSocket()建立一個對象,該對象負責發送資料包。
DatagramSocket mail_out=new DatagramSocket();mail_out.send(data_pack);
- 接受資料包:
-
DatagramSocket的另一個構造方法DatagramSocket(int port) 建立一個對象,其中的參數必須和待接收的資料包的連接埠號碼相同
DatagramSocket mail_in=new DatagramSocket(連接埠號碼);
- 然後對象mail_in使用方法receive(DatagramPacket pack)接受資料包。
-
用 DatagramPack類的另外一個構造方法: DatagramPack(byte data[],int length)建立一個資料包,用於接收資料包
byte data[]=new byte[100]; int length=90; DatagramPacket pack=new DatagramPacket(data,length); mail_in.receive(pack);
- 遠程對象:
駐留在(遠程)伺服器上的對象是客戶要請求的對象,稱作遠程對象。
- 代理的特點是它與遠程對象實現了相同的介面。
- 存根(Stub):一種特殊的位元組碼,並讓這個存根產生的對象為作為遠程對象的代理
-
Remote介面:RMI為了標識一個對象是遠程對象,即可以被客戶請求的對象,要求遠程對象必須實現java.rmi包中的Remote介面
教材學習中的問題和解決過程
- 問題1:基於UDP的通訊和基於TCP的通訊不同點是什嗎?
-
問題1解決方案:基於UDP的資訊傳遞更快,但不提供可靠性保證
代碼調試中的問題和解決過程
- 問題1:敲代碼的時候出現了這樣的差錯,在沒仔細看程式的情況下,沒能根據錯誤提示排除原因
-
問題1解決方案:仔細閱讀代碼後,發現這是一句輸出語句,system中間誤輸了一個空格
代碼託管
這周好像修改了部分之前的代碼,所以算到這周的代碼量了。實際上代碼量為516
(statistics.sh指令碼的運行結果)
上周考試錯題總結
- 錯題1:對於下列程式,哪個敘述是正確的? A
A.JVM認為這個應用程式共有兩個線程。
B.JVM認為這個應用程式只有一個主線程。
C.JVM認為這個應用程式只有一個thread線程。
D.程式有編譯錯誤,無法運行。
- 錯題2:進程的基本狀態有:建立、運行、阻塞、死亡。 A
A.true
B.false
其他(感悟、思考等,可選)
本周學習的知識讓我認識到java不限於本地的應用,除了資料庫外,還可以通過網路傳輸和接受資料包並且實現一些操作。
學習進度條
|
程式碼數(新增/累積) |
部落格量(新增/累積) |
學習時間(新增/累積) |
重要成長 |
| 目標 |
5000行 |
25篇 |
400小時 |
|
| 第一周 |
235/235 |
1/1 |
15/15 |
|
| 第二周 |
224/459 |
2/3 |
15/30 |
|
| 第三周 |
443/902 |
1/4 |
15/73 |
|
| 第四周 |
577/1479 |
2/6 |
17/90 |
|
| 第五周 |
1222/2360 |
1/7 |
14/104 |
|
| 第六周 |
1527/3294 |
1/8 |
14/118 |
|
| 第七周 |
591/3883 |
1/9 |
14/132 |
|
| 第八周 |
1705/5158 |
1/10 |
12/144 |
|
| 第九周 |
516/5674 |
1/11 |
14/158 |
|
20165228 2017-2018-2 《Java程式設計》第9周學習總結