Python 提供了兩個級別訪問的網絡服務,低級別的網絡服務支持基本的Socket,高級別的網絡服務模塊SocketServer,Socket又稱"套接字",應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求,使主機間或者一台計算機上的進程間可以通訊
套接字類型
套接字格式:socket(family,type [,protocal])使用給定的套接族,套接字類型,協議編號(默認為0)來創建套接字
socket類型 描述
socket.AF_UNIX 用於同一台機器上的進程通信(本機通信)
socket.AF_INET 用於服務器與服務器之間的網絡通信
socket.AF_INET6 基於IPV6方式的服務器與服務器之間的網絡通信
socket.SOCK_STREAM 基於TCP的流式套接字通信
socket.SOCK_DGRAM 基於UDP的數據報式套接字通信
socket.SOCK_RAW 原始套接字,普通的套接字無法處理ICMP,IGMP等網絡報文,而SOCK_RAW可以;其次SOCK_RAW也可以處理特殊的IPV4報文;此外,利用原始套接字,可以通過IP_HDRINCL套接字選項由用戶構造IP頭
socket.SOCK_SEQPACKET 可靠的連續數據包服務
創建TCP Socket:
Socket= socket.socket(插座。AF_INET,插座。SOCK_STREAM)
#創建UDP套接字:
#Socket= socket.socket(插座。AF_INET,插座。SOCK_DGRAM)
套接字函數
套接字函數
TCP發送數據時,已建立好TCP鏈接,所以不需要指定地址,而UDP是面向無連接的,每次發送都需要指定發送給誰。
服務器與客戶端不能直接發送列表,元素,字典等帶有數據類型的格式,發送的內容必須是字符串數據。
服務器端Socket函數
(1)s.bind(地址) 將套接字綁定到地址,在AF_INET下,以元組(主機,端口)的方式傳入,如s.bind((主機,端口))
(2)s.listen(積壓) 開始監聽TCP傳入連接,積壓指定在拒絕鏈接前,操作系統可以掛起的最大連接數,該值最少為1,大部分應用程序設為5就夠用了
(3)s.accept()接受TCP鏈接並返回(conn,address),其中conn是新的套接字對象,可以用來接收和發送數據,地址是鏈接客戶端的地址。
客戶端Socket函數
(1)s.connect(地址) 鏈接到地址處的套接字,一般地址的格式為元組(主機,端口),如果鏈接出錯,則返回socket.error錯誤
(2)s.connect_ex(地址) 功能與s.connect(地址)相同,但成功返回0,失敗返回錯誤號的值
這個部分主要是偏向網路概論,只是讓大家知道python應用層面很廣