socket經常使用功能函數:html
socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None) #建立socket對象python
socket families(地址簇):服務器
AF_UNIX —————————— unix本機之間進行通訊socket
AF_INET —————————— 使用IPv4函數
AF_INET6 —————————— 使用IPv6
大數據
注:socket.socket()中第一個能使用上述值。spa
socket types:unix
SOCK_STREAM # TCP套接字類型code
SOCK_DGRAM # UDP套接字類型htm
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不能在發送數據,鏈接另外一端也將不在接收數據。