天天看點

Python進階文法——網絡程式設計——學習心得筆記Python進階文法——網絡程式設計——學習心得筆記1. 網絡程式設計2. HTTP協定

Python進階文法——網絡程式設計——學習心得筆記

1. 網絡程式設計

  • 網絡協定:一套規則
  • 網絡模型
    • 七層模型
    • 四層模型-實際應用
  • 每一層都有相應的協定負責交換資訊或者協同工作
  • TCP/IP 協定
  • IP位址:負責在網絡上唯一定位一個機器
    • IP位址分為ABCDE類
    • 由四個數字段組成,每個數字段的取值0-255
    • 192.168.xxx.xxx 區域網路IP
    • 127.0.0.1 本機
    • IPv4
    • IPv6
  • 端口
    • 範圍:0-65535
      • 知名端口:0-1023
      • 非知名端口: 1024-65535
  • TCP/UDP協定
    • UDP:非安全的,不面向連接配接的傳輸
      • 安全性差
      • 大小限制在64KB
      • 沒有順序
      • 速度快
    • TCP
      • 基于連接配接的通信
  • SOCKET程式設計
    • 套接字
    • 一個網絡通信的端點,能實作不同主機的程序通信
    • 通過IP和端口定位對方發送消息的通信機制
    • 分為UDP和TCP
    • UDP用于即時通訊,要求速度快,内容少
    • 用戶端Client: 發起通路的一方
    • 伺服器端Server:接受通路的一方

      **

- 看執行個體伺服器端:37_1

**

import socket

# 模拟伺服器的函數
# 建立一個伺服器端

def serverFunc():
    # 1. 建立socket
    # socket.AF_INET:使用ipv4協定
    # socket.SOCK_DGRAM使用UDP通信
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # 2.綁定ip和port
    # 127.0.0.1這個IP代表機器自身
    # 7852 随手指定的端口号
    # 位址是一個tuple類型(ip, port)
    addr = ('127.0.0.1', 7852)
    # 綁定位址和端口
    sock.bind(addr)

    # 3.接受對方消息
    # 等待方式為死等,沒有其他可能性
    # recvfrom接受的傳回值是一個tuple,前一項表示資料,後一項表示位址
    # recvfrom參數的含義是緩沖區大小
    # rst = sock.recvfrom(500)
    data, addr = sock.recvfrom(500)
    print(data)
    print(type(data))

    # 發送過來的資料時bytes格式,必須通過解碼才能得到格式的内容
    # decode解碼函數預設參數是utf8
    text = data.decode()
    print(text)
    print(type(text))

    # 4.給對方傳回消息
    # 發送的消息需要編碼成bytes格式
    # encode預設也是utf8
    # 注意編碼和解碼要一緻
    rsp = '我已經收到你的愛了,我也愛你'
    data = rsp.encode()
    sock.sendto(data, addr)

if __name__ == '__main__':
    print("Starting server......")
    serverFunc()
    print("Ending server......")






           
**
           

- 看執行個體用戶端:37_2

**

import socket

# Client端流程
# 1.建立通信的socket
# 2.發送内容到指定的伺服器
# 3.接受伺服器給定的回報内容

def clientFunc():
    # 建立連接配接socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 編碼消息
    text = 'I love you baby'
    data = text.encode()
    # 發送消息到伺服器端
    sock.sendto(data, ('127.0.0.1', 7852))
    # 接受伺服器的消息,并對其解碼
    data, addr = sock.recvfrom(200)
    text = data.decode()
    print(text)

if __name__ == '__main__':
    clientFunc()


           

2. HTTP協定

  • 什麼超文本
    • 超文本是用超連結的方法,将各種不同空間的文字資訊組織在一起的網狀文本。
    • 超文本更是一種使用者介面範式,用來顯示文本及與文本之間相關的内容。
  • 什麼實URL(Uniform Resource Locator)
    • url是統一資源定位符,對可以從網際網路上得到的資源的位置和通路方法的一種簡潔的表示,是網際網路上标準資源的位址。
    • 網際網路上的每個檔案都有一個唯一的URL,它包含的資訊指出檔案的位置以及浏覽器應該怎麼處理它
    • 基本URL包含模式(或稱協定)、伺服器名稱(或IP位址)、路徑和檔案名
  • 超文本傳輸協定HTTP
    • 是一種按照URL訓示通路一個html檔案
    • 通路流程:
      • 參考圖檔37_0
        Python進階文法——網絡程式設計——學習心得筆記Python進階文法——網絡程式設計——學習心得筆記1. 網絡程式設計2. HTTP協定
  • 特點
    • 參考我的部落格:
    • HTTP協定的特點及通路流程-(上網流程圖解)