java基礎之網絡編程
1. 網絡:不同的區域的計算器連接到一起就是網絡,含局域網 城域網 互聯網等
地址:ip地址,確定網絡上的一個絕對的位置,端口號:用於區分計算機上的軟件的。
資源需要進來所以出現了uri ,url其中UrL表示統一資源定位符,Uri 表示統一資源
url是uri的升級版多了一個定位
2. Tcp協議和udp協議
Tcp:先連接後接通 類似於打電話,說一次回應一次,面向連接,效率低下
Udp:協議,短信方式,非面向連接
3. 端口:1~65535之間 ,一般不建議使用1024以下的端口,因為多為被占用的端口
4. 緩存;dns查找的開銷是非常大的,所以inetaddress類會緩存相應的結果,所以一旦得到結果那麽就不會再次查找,在某些情況下,第一次查找失敗,而第二次卻查找成功是因為,第一次的時候信息還在傳輸中,第二個請求時可用,因為對於補充的dns查詢只緩存10秒,一次ip地址的改變可能需要花幾個小時,在此期間會有各種異常,主機名一般比ip地址穩定一些,所以一般會選擇主機名,在主機名找不到的時候才會選擇ip地址。
5. inetaddress :沒有公共的構造方法,但有一些靜態工廠方法來連接dns服務器來解析主機名,其中常用的有inetaddress.getbyname()以及inetaddress.getlocalhost();
inetaddress的常用方法:
getHostAddress():獲取ip地址
getHostName():獲取主機名
uri:標識一個資源的字符串
url:標識一個資源加位置
常用方法
openConnection()
openStream()
例如https://hao.360.cn/?src=lm&ls=n31c42a959f
getFile()
:
獲取此 URL
的目錄路徑加查詢字符串 主機名後的第一個/和標識符#之間,沒有就從主機名後的第一個/到最後 ?src=lm&ls=n31c42a959f
getPort()
:
獲取此 URL
的端口號,沒有就返回-1;
getPath()
:
獲取此 URL
的目錄路徑。/
getProtocol()
:
獲取此 URL
的協議名稱。https
getHost()
:
獲取此 URL
的主機名。hao.360.cn
getRef()
:url的片段標識符#後面的,沒有返回null;
getQuery()
:返回查詢字符串src=lm&ls=n31c42a959f
url上應該避免使用equals方法因為可能是阻塞的i/o操作
get通信:名值對,不安全會顯示
get/index.html ?account=dasdsa&password=dsadsadsad http/1.1:為請求行,get為返回資源的一個表示,/index.html請求資源的路徑,http//1.1為協議的版本 ?後面為鍵值對,
Host: 127.0.0.1:8888:端口號;
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 :可以處理的文本類型
Connection: keep-alive:保持連接
6. Urlconnection
Getcontentype():獲取響應主體的內容類型
Getconnectlength():獲取內容的字節數,沒有返回-1;
getOutputStream
();
返回輸出流
7. socket
Socket
(InetAddress address, int port)
:開啟socket;
setSoTimeout
(int timeout)
:設置超時時間;
getOutputStream
()
:請求輸出流
close
()
:關閉輸入輸出
shutdownInput
()
:關閉輸入,不釋放socket占用的資源
shutdownOutput
()
:關閉輸出,不釋放socket占用的資源
getPort
()
:獲取遠程端口
getKeepAlive
()
:是否開啟連接
8. seversocket
ServerSocket
(int port):
創建serversocket對象
accept
()
:監聽連接和處理連接是可能拋出的異常,返回一個socket對象
DatagramSocket
DatagramSocket
()
:用於client端
DatagramSocket
(int port)
:用於server端
send
(DatagramPacket p)
:用於client端
receive
(DatagramPacket p)
:用於server端
setSoTimeout
(int timeout)
:連接超時時間
9. DatagramPacket
DatagramPacket
(byte[] buf,int length,InetAddress address,int port)
:用於client端,打包數據
getData
()
:獲得緩沖區數據,返回一個字節數組,後面一般會利用getLength()
getLength
()
:getdata()中有效長度
詳見:o’Reilly網絡編程
java基礎之網絡編程