1. 程式人生 > 其它 >javaSE 筆記 網路程式設計

javaSE 筆記 網路程式設計

網路程式設計概述

實現網路互連的不同計算機上執行的程式間可以進行資料交換

網路程式設計三要素

簡單來說就是IP地址,用來識別裝置的,埠,用來識別應用程式的,協議,用來遵守"交通規則"的

IP地址

IPv4:是給每個連線在網路上的主機分配一個32bit地址,要是用二進位制表示,就是4個位元組,不過一般用10進位制來記,比如192.168.1.66
IPv6:採用128位地址長度,16個位一組,8組十六進位制數
常用命令:
ipconfig:檢視本機IP地址
ping IP地址:檢查網路是否連通
特殊IP地址:127.0.0.1:回送地址,可以代表本機地址,一般用來測試使用

InetAddress類

為了方便我們對IP地址的獲取和操作,JAVA提供了一個InetAddress類 供我們使用
這個類沒有構造方法,同時他裡面的各種方法也不全是靜態方法,但是他提供一種靜態方法來獲取該類的物件


主要的方法有:1.staticInetAddress getByName(String host) 確定主機名稱的IP地址,主機名稱可以使機器名稱,也可以是IP地址
2.String getHostName() 獲取此IP地址的主機名
3.String getHostAdress() 返回文字顯示中的IP地址字串

埠號:用兩個位元組表示的整數,它的取值是0-65535,其中,0-1023之間的埠號用於一些知名的網路服務和應用,普通的應用程式需要
使用1024以上的埠號。如果埠號被另外一個服務或應用所佔用,會導致當前程式啟動失敗。

協議

UDP協議:無連線通訊協議,即在資料傳輸時,資料傳送端和接收端不建立連結。適合傳輸不重要的資訊。

TCP協議:TCP協議是面向連線

的通訊協議,即傳輸資料之前,在傳送端和接收端建立邏輯連線,然後再傳輸資料,它提供了兩臺計算機之間
可靠無差錯的資料傳輸。適合重要資訊的傳輸

UDP傳送資料

java提供了一個類 DatagramSocket 用於傳送和接收資料報資料包的套接字,傳送物件可以用DatagramPacket建立,構造方式如下
DatagramPacket​(byte[] buf, int offset, int length, InetAddress address, int port)
構造一個數據報包,用於將長度為 length且偏移量為 ioffset的資料包傳送到指定主機上的指定埠號。

UDP接收資料

TCP傳送資料

java使用Socket物件來代表兩端的通訊埠,並通過Socket產生IO流來進行網路通訊,java為客戶端提供了Socket類,為伺服器端提供了ServerSocket類

因為TCP通訊是需要三次握手的,所以只有傳送資料是不行的,還得建立接受資料

TCP接收資料

TCP例子


有個shutdown的方法可以替代自定義結束標記,沒有結束標記的話,服務端會一直在等待客戶端傳資料。這麼看起來不知道while((line=br.readLine())!=null)到底在限制什麼。
另外TCP的服務端相比於客戶端,多了一個監聽的功能,用accept()方法獲取,返回的也是一個Socket物件。