標籤:ufs 阻塞 進階 lag 參數 不同 訊號 有助於 aik
socket常用功能函數:
socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None) #建立socket對象
socket families(地址簇):
AF_UNIX —————————— unix本機之間進行通訊
AF_INET —————————— 使用IPv4
AF_INET6 —————————— 使用IPv6
註:socket.socket()中第一個能使用上述值。
socket types:
SOCK_STREAM # TCP通訊端類型
SOCK_DGRAM # UDP通訊端類型
SOCK_RAW #原始通訊端類型,這個通訊端比較強大,建立這種通訊端可以監聽網卡上的所有資料幀
SOCK_RDM #是一種可靠的UDP形式,即保證交付資料報但不保證順序。SOCK_RAM用來提供對原始協議的低級訪問,在需要執行某些特殊操作時使用,如發送ICMP報文。SOCK_RAM通常僅限於進階使用者或管理員啟動並執行程式使用。
註:這些常量都是通訊端類型,應用於socket()函數中的第二個參數中.根據系統的不同,可能有更多的常數。(只有SOCK_STREAM和SOCK_DGRAM似乎通常很有用。)
協議號通常為零,可以省略,或者在地址族為AF_CAN的情況下,協議應為CAN_RAW或CAN_BCM 。如果指定fileno,則忽略其他參數,從而導致具有指定檔案描述器的通訊端返回。與socket.fromfd()不同,fileno將返回相同的通訊端,而不是重複。這可能有助於使用socket.close()關閉分離的通訊端,一般情況下後兩個參數忽略即可。
socket.bind(address) #將socket綁定到地址(常用於服務端)
address地址的格式取決於地址族, 在AF_INET下,以元組(host,port)的形式表示地址。
socket.listen([backlog]) #啟用伺服器以接受串連(常用於服務端)。
backlog >=0,指定系統在拒絕新串連之前將允許的未接受串連的數量。如果未指定,則選擇預設的合理值。
socket.accept() #接收一個串連.該socket 必須要綁定一個地址和監聽串連.傳回值是一對(conn,address)。(常用於服務端)
conn是socket對象,可以在該串連上發送和接收資料,address是串連另一端的地址。
socket.recv(bufsize[, flags]) #從socket接收資料,傳回值是一個代表所收到的資料的位元組對象。
一次性接收的最大資料量由bufsize指定, 參數flags通常忽略。
socket.send(data[, flags]) #將資料發送到socket。
python3中只能發送bytes類型的資料。
socket.connect(address) #串連到遠程socket(常用於用戶端)
如果串連被訊號中斷,則該方法等待直到串連完成,或者如果訊號處理常式沒有引發異常並且通訊端正在阻塞或者已經阻塞,則在逾時時引入socket.timeout逾時。對於非阻塞通訊端,如果串連被訊號中斷(或由訊號處理常式引發的異常),則該方法引發InterruptedError異常。
socket.close() #關閉socket
註:被調用後,串連斷開,socket不能在發送資料,串連另一端也將不在接收資料。
python --- socket模組詳解