最近在看<python應用核心編程第三版>英文原版, 不是想裝逼, 是真沒有中文版...感覺看原版也不是很累, 這里是我關于網(wǎng)絡編程這一章的學習筆記.
概念
概念這個東西, 一般是沒有人認真去看的. 但我覺得挺重要, 對軟件相關的知識更是關鍵.
這本書用了挺大的篇幅來介紹服務器/客戶端結構. 涉及很多種服務器/客戶端模式, 總體包括硬件和軟件兩大種. 作者打了一個很好的比方, 把這種結構比作是銀行前臺和客戶. 前臺處于一種一直ready的狀態(tài), 客戶一個接一個排隊來辦業(yè)務, 前臺一個一個處理. 如果處理完一個客戶, 暫時沒有其他客戶, 那TA也不能休息, 一直等著下一個客戶的光臨, 真tmd一個勞模啊. 服務器就是這個nb勞模, 而客戶呢當然就是客戶端.
對于網(wǎng)絡編程中的服務器/客戶端結構, 在一切ready之前, 首先得有個環(huán)境搭建的過程. 這個過程最重要的部分是要建一個communication endpoint.
這個endpoint可以理解為一個公司的前臺接待或者是轉(zhuǎn)接員, 主要是接聽主線上的電話. 就像早些年一棟樓就一個電話, 你想給誰打最先接到的是門衛(wèi)大媽, 告她找誰誰, 然后她幫你喊. 接下來要引入的重要角色socket呢, 就是這個大媽.
再來個生動的比喻, 如果說socket是電話上電話線的接口來保證通信, 那么Host和port這一對兒就是區(qū)號和電話號碼. 你要沒有這兩個就算電話線插出花來, 也還是通信不了.
然后就是TCP和UDP. TCP屬于connection-oriented的連接方式, UDP則屬于connectionless的. 兩者的關系和區(qū)別地球人兒基本都知道, 要不知道問下度娘. 這里要強調(diào)一下的是TCP也叫stream socket, UDP也叫datagram socket.
在python中的網(wǎng)絡編程
python中有關網(wǎng)絡編程的模塊是socket, 建立socket的方法是socket.socket().
初始化一個TCP/IP和UDP/IP類型的socket:
import socket
# 注意tcp也叫steam socket, 所以第二個參數(shù)是SOCK_STREAM(內(nèi)置變量)
# 至于第一個參數(shù)是表明socket family的, 我們這里基本上就是AF_INET了.
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# udp的別名叫datagram, 所以第二個參數(shù)是SOCK_DGRAM
udpSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
to be continued...