day11【網絡編程】

主要內容

  • 軟件架構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網絡程序

TCP

1.【服務端】啓動,創建ServerSocket對象,等待連接
2.【客戶端】啓動,創建Socket對象,請求連接
3.【服務端】接受連接,調用accept方法,返回一個Socket對象
4.【客戶端】Socket對象獲取OutputStream,向服務器寫出數據
5.【服務端】Socket對象獲取InputStream,讀取客戶端的數據
6.【服務端】Socket對象獲取OutputStream,向客戶端回寫數據
7.【客戶端】Socket對象獲取InputStream,解析回寫的數據
8【客戶端】釋放資源,斷開連接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章