套接字的地址家族(AF, Address Family)分為2種,一種是基于文件的AF_UNIX,一種是基于網(wǎng)絡(luò)的AF_INET,;套接字的類型有2種,面向連接的套接字SOCK_STREAM和無(wú)連接的套接字SOCK_DGRAM。
10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有松溪免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
UDP常用的模塊有3個(gè):
(1) socket([family[, type[proto]]])
(2) sendto(string,address)
(3) recvfrom(bufsize[, flags]) 收發(fā)UDP數(shù)據(jù),接收到的是data,address
TCP常用的模塊有6個(gè):
(1) connect(address) 客戶端連接TCP服務(wù)器,address地址必須是一個(gè)雙元素元組,格式是(host,port)
(2) send(bytes[, flags])
(3) recv(bufsize[, flags]) 收發(fā)TCP數(shù)據(jù),接收到的是data
(4) bind(address)
(5) listen(backlog) backlog指定最多允許多少個(gè)客戶連接到服務(wù)器。它的值至少為1。收到連接請(qǐng)求后,這些請(qǐng)求需要排隊(duì),如果隊(duì)列滿,就拒絕請(qǐng)求。
(6) accept() 調(diào)用accept方法時(shí),socket會(huì)時(shí)入“waiting”狀態(tài)??蛻粽?qǐng)求連接時(shí),方法建立連接并返回服務(wù)器。accept方法返回一個(gè)含有兩個(gè)元素的 元組(connection,address)。第一個(gè)元素connection是新的socket對(duì)象,服務(wù)器必須通過(guò)它與客戶通信;第二個(gè)元素 address是客戶的Internet地址。
TCP連接的流程如下圖所示。
需要注意的是,在socket傳送信息時(shí),只能以byte格式發(fā)送,而python3默認(rèn)的是unicode格式。因此,對(duì)python3在發(fā)送str時(shí)需要編碼str.encode(),接收str時(shí)需要解碼str.decode()。