主要內容
- 軟件架構CS/BS
- 網絡通信三要素
- TCP通信
- Socket套接字
- ServerSocket
1 網絡編程入門
1.1軟件結構
- C/S結構:指客戶端和服務器結構。
- B/S結構:指瀏覽器和服務器結構
1.2網絡通信協議
TCP/IP四層模型
- 應用層
- 傳輸層
- 網絡層
- 數據鏈路層/物理層
1.3協議分類
TCP面向連接
三次握手
第一次握手,客戶端向服務器端發出連接請求,等待服務器確認。
第二次握手,服務器端向客戶端回送一個響應,通知客戶端收到了連接請求。
第三次握手,客戶端再次向服務器端發送確認信息,確認連接UDP面向無連接
不需要建立連接,直接發送,每個數據包大小在64k以內。傳輸速度快,容易丟失數據。
1.4網絡編程三要素
- 協議
- IP地址
設備在網絡中的唯一標識
查看本機ip:ipconfig
檢查網絡是否連通:ping 220.181.57.216
本機ip:127.0.0.1、localhost- 端口
程序在設備中的唯一標識
範圍:兩個字節的整數,0-65535(1024以下屬於系統)
2 TCP通信程序
通信步奏:
1.ServerSocket對象:服務端Server先啓動,等待客戶端Client連接
2.Socket對象:客戶端主動連接服務器端,連接成功草能通信
2.1 Socket類
客戶端套接字
構造方法
public Socket(String host,int port): 創建套接字對象連接到指定ip的指定端口號。 如果host=null,則相當於指定地址爲回送地址127.0.0.1 Socket client = new Socket("127.0.0.1", 6666);
成員方法
public InputStream getInputStream() : 返回輸入流 如果此Scoket具有相關聯的通道,則關閉生成的InputStream也將關閉相關的Socket。 public OutputStream getOutputStream() :返回輸出流。 如果此Scoket具有相關聯的通道,則關閉生成的OutputStream也關閉相關的Socket。 public void close() :關閉此套接字。 關閉此socket也將關閉相關的InputStream和OutputStream 。 public void shutdownOutput() : 禁用此套接字的輸出流。 任何先前寫出的數據將被髮送,隨後終止輸出流
2.2 ServerSocket類
服務器套接字
構造方法
public ServerSocket(int port): 創建ServerSocket綁定端口號port。 ServerSocket server = new ServerSocket(6666);
成員方法
public Socket accept(); 偵聽並接受連接,返回Socket對象用於和客戶端通信, 該方法一直堵塞知道建立連接
2.3 簡單的TCP網絡程序
1.【服務端】啓動,創建ServerSocket對象,等待連接
2.【客戶端】啓動,創建Socket對象,請求連接
3.【服務端】接受連接,調用accept方法,返回一個Socket對象
4.【客戶端】Socket對象獲取OutputStream,向服務器寫出數據
5.【服務端】Socket對象獲取InputStream,讀取客戶端的數據
6.【服務端】Socket對象獲取OutputStream,向客戶端回寫數據
7.【客戶端】Socket對象獲取InputStream,解析回寫的數據
8【客戶端】釋放資源,斷開連接