201711671235學習《java程式設計》第十三週學習總結
教材學習內容總結
1.URL類
java.net中一個重要的類,使用URL建立物件的應用程式成為客戶端程式 | ||
URL物件 | ||
協議 | 地址 | 資源 |
Http、Ftp、File | 有效IP地址或域名 | 主機上任何一個檔案 |
1.1URL構造方法
a.public URL(String spec)throws MalformedURLException,使用字串初始化物件
spec形式:例http://www.google.com
b.public URL(String protocol,String host,String file)throws MalformedURLException,其中protoco為協議,hostl為地址,file為資源
1.2讀取URL中的資源
返回一個輸入流、該輸入流指向物件所包含的資源 | 客戶端<-伺服器 |
2.InetAdddress類
2.1
地址表示 | |
例:域名:www.mosoteach.cn | 例:IP地址:202.108.37.40 |
域名容易記憶。在連線網路輸入一個主機域名後,域名伺服器(DNS)負責將域名轉化為IP地址,才能和主機建立連線
2.2獲取地址
獲取Internet上主機的地址
InetAddress類靜態方法 | 例項方法 |
getByName(String s) | pubilc String getHostName() |
獲取主機地址的域名和IP地址 | 獲取InetAddress物件所含的域名 |
public String getHostAddress() | |
獲取InetAddress物件所含的IP地址 |
3.套接字
3.1套接字概述
埠號:16位的0-65535之間的整數,0-1023被預先定義的服務通訊
埠號+IP地址=套接字
程式1:Socket類建立套接字物件
連線
程式2:Socket類建立套接字物件
3.2客戶端套接字
Socket(String host,int port)引數host是伺服器IP地址,port是一個埠號
客戶端 ->輸入流 ->讀取 資源 <-輸出流 <-伺服器
伺服器 ->輸入流 ->讀取 資源 <-輸出流 <-客戶端
3.3ServerSocket物件與伺服器端套接字
伺服器建立一個ServerSocket物件,該物件將客戶端的套接字物件和伺服器端的一個套接字物件連線起來
構造方法:ServerSocket(int port),port是一個埠號,和客戶呼叫的埠號相同
ServerSocket物件建立之後,ServerSocket物件.accept()將客戶端的套接字和伺服器端的一個套接字物件連線起來
客戶端 | 伺服器 |
調節字物件.getIneAddress():獲取一個InetAddress物件 | |
該物件含有伺服器端的IP地址和域名 | 該物件含有客戶端的IP地址和域名 |
3.4使用多執行緒技術
計算量大的工作放在伺服器端,計算量小的工作放在客戶端。
使用到的類:Socket、InetAddress、InetSocketAddress
Socket建立套接字物件.connect()方法:請求和引數SocketAddress指定的地址的伺服器端的套接字建立連線
public void connect(SocketAddress endpoint)
IntSocketAddress構造方法:public InetSocketAddress(InetAddress addr,int port)
4.UDP資料報
套接字(基於TCP協議的網路通訊) | 基於UDP(使用者資料報協議)的網路資訊傳輸方式 |
電話資訊互動(有先來後到,知道對方是否接收到資訊) | 郵遞信件(沒有先來後到,不確定對方是否接收到資訊) |
將資料打包,成為資料包,然後將資料包發往目的地; 接收發來的資料包,然後檢視資料包中的內容。 |
4.1傳送資料包
DatagramPacket類 將資料打包 DatagramPacket類建立一個傳送方物件,成為資料包
建立待發送的資料包的構造方法:
DatagramPacket(byte data[],int length,InetAddress adress,int port) | DatagramPack(byte data[],int offset,int length,InetAddress adress,int port) |
物件性質:含有data資料指定的資料;該資料包將傳送到的地址是address(目標地址),埠號是port的主機上(目標埠) | 該構造方法建立的傳送方資料包物件含有資料data中從offset開始後的length個位元組;該資料包將傳送到的地址是address(目標地址),埠號是port的主機上(目標埠) |
傳送方物件 | |
呼叫public int getPort() | 獲取接收方埠 |
呼叫public InetAddress() | 獲取接收方地址 |
DatagramSocket()建立一個傳送方傳送物件,該物件負責傳送資料包:傳送方物件.send(資料包)
4.2接收資料包
DatagramScoket(int port) | 建立一個接收物件,注:port與待接收的資料包的埠號相同 |
傳送方接收物件.receive(DatagramPacket pack) | 接收資料包,接收的資料包放到pack中 |
DatagramPack(byte data[],int length) | 建立接收資料包pack |
例:DatagramPacket pack=new DatagramPacket(data,length)
傳送方的接收物件 | |
getPort() | 獲取接收方的埠號 |
getLength() | 獲取收到資料的位元組長度 |
InetAddress getAddress() | 獲取接收方的主機(即地址) |
4.3廣播資料報
Internet的地址是a.b.c.d的形式
a<128 | 128<=a<192 | a>=192 | 224.0.0.0-239.255.255.255 |
a表示網路地址,b.c.d表示主機地址 | a.b表示網路地址,c.d表示主機地址 |
a.b.c表示網路地址,d表示主機地址 | 保留地址 |
A類地址 | B類地址 | C類地址 | D類地址 |
組播地址 |
要廣播或接受廣播的主機都必須加入同一個D類地址
6.Java遠端呼叫
客戶端 | 遠端物件 | (遠端物件的)代理 | 存根 | Remote介面 |
呼叫物件 | 被呼叫物件
客戶端請求(遠端)伺服器上的物件->遠端物件 遠端物件.方法->返回必要的結果 |
與遠端物件實現同樣的介面 | 由RMI生成,一種特殊的位元組碼,存根(類)->物件《=》代理 | 標記遠端物件(即遠端物件實現該介面) |
客戶端 | 伺服器 | 客戶端 | 伺服器 | |
方法:使用rmic命令生成存根 | 定義子介面,方便遠端物件實現相應的操作 | |||
D:\Client | D:\Server | D:\Client | D:\Server |
遠端伺服器端 啟動註冊:rmiregistry 後臺啟動註冊:start rmiregistry
啟動遠端物件服務 | |
Naming.rehind(String name,Remote obj) | name是URL格式,obj是遠端物件 客戶端通過name找到遠端物件obj |
啟動客戶端 程式 | |
Naming.lookup(String name) | 與上述name相同 |
程式碼學習中的問題和解決過程
客戶端使用了writeUTF()方法向伺服器端傳送資料但客戶端沒反應:未解決
學習進度條
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
目標 | 5000行 | 20篇 | 400小時 | 會用java語言獨立設計程式 |
第一週 | 13/13 | 1/1 | 5/5 | 學會使用jdk以及對java源程式語句的基本注意事項有所瞭解 |
第二週 | 140/143 | 1/2 | 10/15 | 學會java基本資料型別與陣列和c語言/c++在表達和用法上的相同/不同之處 |
第三週 | 276/419 | 1/3 | 20/35 | java中運算子,表示式和語句的表現形式,類的宣告,定義方法 |
第四周 | 600/1019 | 1/4 | 30/45 | 類和物件 |
第五週 | 150/1169 |
1/5 | 10/55 | 繼承的作用,子類和父類的繼承性,子類繼承父類後方法的訪問許可權以及各種操作 |
第六週 | 100/1269 | 1/6 | 8/63 | 介面定義、使用方法和作用 |
第七週 | 100/1369 | 1/7 | 9/72 | 內部類(獨有)包含匿名類和異常類(檢測)的使用方法和作用 |
第八週 | 150/1869 | 1/8 | 10/82 | java常用實用類和方法 |
第九周 | 100/1969 | 1/9 | 20/102 | 元件、容器、視窗、(如何處理事件:事件源,監視器、介面) |
第十週 | 80/2049 | 1/10 | 10/112 | 輸入輸出流和各種流的作用、構造方法 |
第十一週 | 92/2141 | 1/11 | 7/119 | 連線資料庫步驟、查詢、更新、新增、刪除語句 |
第十二週 | 104/2245 | 1/12 | 15/134 | 多執行緒的執行順序和特點 |
第十三週 | 150/2395 | 1/13 | 12/146 | 執行緒、套接字、資料報、元件面板等的結合應用 |
參考文獻
《java2實用教程(第5版)》