C/S
S就是服務器,C是客戶端,客戶端要與服務器端進行交互必須藉助於網絡,在JAVA中網絡的通信不光可以在C/S中實現也可以B/S中實現。
(瞭解)
TCP/IP協議
TCP/IP(Transmission Control Protocol / Internet Protocol) 傳輸控制/網際協議,又稱網絡通信協議,TCP、IP協議時網絡通信中最基本的協議
IP
計算機在網絡的唯一標識,是計算機的數字標識
域名
計算機的字符化標識,域名不能被網絡設別識別,必須藉助DNS進行解析才能獲取
端口
計算機與外界通訊的接口,其範圍是0~65535,1024以外端口爲系統所佔用
P2P:Point to Point ,網絡中兩臺計算機進行互相訪問,在這過程中,兩臺計算機既擔負着服務器的角色提供信息,又擔負着客戶端的角色獲取信息。
要實現P2P必須先通過IP定位知道對方在網絡中的位置
InetAddress
該類表示IP地址對象,可以通過InetAddress可以獲取計算機的IP,主機名等計算機身份信息
通過主機名或域名獲取IP地址
創建IP地址對象根據域名創建
InetAddress address = InetAddress.getByName("www.qq.com");
打印顯示該地址中的IP
System.out.println(address.getHostAddress());
通過IP地址或域名獲取主機名
//根據IP地址創建
InetAddress address = InetAddress.getByName("192.168.9.100");
//獲取主機名稱
System.out.println(address.getHostName());
Socket對象
Socket又稱套接字,是TCP/IP協議中的基本概念,Socket是兩個程序進行通訊的端點,其功能是負責將信息先寫入Socket,再將TCP/IP包信息發送到網絡中另一個Socket端,Sockte可以在同一臺電腦中,也可以網絡中的遠程計算機上。
ServerSocket服務端
ServerSocket是建立在服務器端的套接字,負責開放端口並監測連入的客戶端套接字。
服務器端的監聽
Socket socket = server.accept();
服務器端以阻塞的方式監聽連入的客戶端,獲取客戶端套接字對象
//創建服務端的sockect對象,該對象打開了9090端口
System.out.println("服務器開啓了9090端口");
ServerSocket server = new ServerSocket(9090);
//開啓服務端的socket,並通過線程阻塞的方式負責監聽連入該服務端客戶端socket
//返回值表示連入服務器的客戶端對象
System.out.println("服務器運行中,正在等待客戶端等的連接…………");
Socket client = server.accept();
System.out.println(client.getInetAddress().getHostAddress()+"已經連入服務器");
Socket客戶端
Socket是客戶端的訪問接口,用於對服務器端的訪問,負責將信息寫入併發送給服務器端。
System.out.println("客戶端正在連接服務器.......");
Socket client = new Socket("192.168.9.100", 9090);
System.out.println("服務器連接成功");
//創建字符流用來接收鍵盤的輸入
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Socket具備兩個字節流獲取的方法
getInputStream()
getOutputStream()
//獲取客戶端的輸入流,讀取客戶端發送的信息
InputStream is = client.getInputStream();
//獲取客戶端等的輸出流,用來將數據寫給服務器
OutputStream os = client.getOutputStream();
//客戶端的輸出流
private BufferedWriter writer;
//客戶端的輸入流
private BufferedReader reader;
//獲取輸出流
writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
//獲取輸入流
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
1對1的數據傳輸
建立服務器端打開開放端口並監聽客戶端
建立客戶端連接服務器,寫入數據並通過輸出流傳遞給服務器端
1對多傳輸
建立服務器並打開端口並監聽連入的客戶端
通過多線程管理多個連入的客戶端,每個客戶端分別開闢線程管理
建立客戶端