天天看點

Python學習筆記16:網絡程式設計

1、引言

用戶端/伺服器架構

(1)硬體的CS架構:列印機伺服器、檔案伺服器

(2)軟體的CS架構:Web伺服器、資料庫伺服器、視窗伺服器

(3)CS網絡程式設計:建立通訊端點,用于“監聽”請求

2、套接字:通信端點

(1)套接字位址:主機+端口

(2)面向連接配接與無連接配接

面向連接配接的套接字(虛電路/流套接字)/無連接配接套接字

面向連接配接:順序的、可靠的、不會重複的資料傳輸,且不會被加上資料邊界。傳輸控制協定(TCP)、網際協定(IP)

無連接配接:資料到達順序、可靠性及不重複性無法保證。資料報會保留資料邊界,資料是整個發送,不像面向連接配接的協定那樣先拆分再組合,性能優。使用者資料報協定(UDP)、網際協定(IP)

3、Python中的網絡程式設計

socket子產品,其中socket()函數用來建立套接字。套接字有自己的一套函數來提供基于套接字的網絡通信。

(1)socket()函數

socket(socket_family,socket_type,protocol=)
           
  • socket_family:不是AF_VNIX,就是AF_INET。
  • socket_type:SOCK_STREAM或者SOCK_DGRAM(流套接字/資料報)
  • protocol:一般不用,預設用0。
tcpsock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
udpsock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
           

(2)套接字對象(内建)方法

(3)建立一個TCP伺服器/建立TCP用戶端

(4)建立一個UDP伺服器/建立UDP用戶端

4、SocketServer子產品

包含一些類,用于簡化實作網絡用戶端和伺服器所需的大量樣闆代碼。

同步伺服器/異步伺服器 事件驅動

建立一個SocketServerTCP伺服器/用戶端

5、Twisted架構

一個完全事件驅動的網絡架構。允許開發完全異步的網絡應用程式和協定。它為你建立一個完整系統提供了很大幫助。系統中可以有:網絡協定、線程、、安全和認證、聊天和即時通訊、資料庫管理、關系資料庫內建、Web/Internet、電子郵件、指令行參數、圖形界面內建等。

建立一個Twisted Reactor TCP伺服器/用戶端