一、網絡編程概述
1、C/S 和 B/S
C/S 是客戶端-服務器軟件結構,服務提供商給予用戶服務需要準備的內容。
- 各大平臺的客戶端
Android iOS PC Windows Linux macOS - 服務器提供服務
軟件更新時,服務器版本更新,同時本地軟件也要進行更新操作,這個操作非常耗時。
B/S是瀏覽器-服務器軟件結構,服務提供商只要提供數據服務以及前端數據展示方式就可以了。
- 瀏覽器提供商非常多
谷歌,火狐,歐朋,Safari,Edge - 服務器提供服務
軟件更新時,服務器更新數據,瀏覽器刷新就可以了。
2、網絡通信協議
網絡通信協議是要求雙方傳遞數據的計算機必須遵守的,按照對應的網絡傳輸協議纔可以進入數據的交互和傳遞。
目前網絡段數據傳輸比較常見的協議: UDP 和 TCP/IP
3、UDP 和 TCP/IP 的區別
UDP
- 面向無連接,數據傳遞不是特別安全。
- 因爲面向無連接,所以傳輸速度快。
- 因爲面向無連接,所以數據傳遞存在丟包問題。
- UDP沒有客戶端和服務器區別,都可以作爲發送端和接收端。
UDP協議的使用場景有直播,網絡遊戲等。
TCP/IP
- 面向連接,數據傳遞較爲安全。
- 因爲面向連接,所以傳遞速度較慢。
- 面向連接,數據傳遞有保障。
- TCP/IP協議是有明確的服務器和客戶端概念。
TCP/IP協議使用場景有客戶端登陸,數據下載,文件傳輸等。
4、網絡編程三要素
-
協議
兩個臺計算機通過網絡進行數據傳遞,都需要對應的協議來完成。 -
IP地址
Internet Protocol Address
當前計算機在網絡中的一個地址編號,類似於手機號號碼
IP地址有IPv4協議和IPv6協議
IPv4是一個32位的二進制數,通常展示效果是a.b.c.d 例如 192.168.1.1
a.b.c.d 各代表0 ~ 255的數字,目前已經消耗殆盡 42億個
IPv6能夠保證地球上的每一粒沙子都有一個IP地址
128位地址長度,16字節一組
8組 0x0 ~ 0xFFFF -
端口號
端口號是當前應用程序在計算機中的一個編號。可以讓計算機明確知道,當前的數據是給予哪一個程序使用,或者數據從哪一個程序出現的。
端口號是一個short類型 0 ~ 65535
0~1024不能用於自定義端口號使用,是特定的系統端口號。
二、IP類
SUN公司提供給開發者使用的IP地址類:InetAddress類
1、常用方法
InetAddress getLocalhost();
獲取本機IP地址類對象
InetAddress getByName(String str);
根據指定的主機名獲取對應的IP地址對象
InetAddress[] getAllByName(String str);
根據指定主機名獲取域名對應的所有IP地址類對象
2、使用演示
public class Demo {
public static void main(String[] args) throws UnknownHostException {
//獲取本機IP地址類對象
InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost);
//根據指定的域名獲取對應的IP地址對象
InetAddress byName = InetAddress.getByName("www.csdn.net");
System.out.println(byName);
//根據指定主機名獲取域名對應的所有IP地址類對象
InetAddress[] allByName = InetAddress.getAllByName("www.baidu.com");
for (InetAddress inetAddress : allByName) {
System.out.println(inetAddress);
}
}
}