socket常用功能函數(shù): socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None) #創(chuàng)建socket對(duì)象 socket families(地址簇): AF_UNIX —————————— unix本機(jī)之間進(jìn)行通信 AF_INET —————————— 使用IPv4 AF_INET6 —————————— 使用IPv6 注:socket.socket()中第一個(gè)能使用上述值。 socket types: SOCK_STREAM # TCP套接字類型 SOCK_DGRAM # UDP套接字類型 SOCK_RAW #原始套接字類型,這個(gè)套接字比較強(qiáng)大,創(chuàng)建這種套接字可以監(jiān)聽網(wǎng)卡上的所有數(shù)據(jù)幀 SOCK_RDM #是一種可靠的UDP形式,即保證交付數(shù)據(jù)報(bào)但不保證順序。SOCK_RAM用來提供對(duì)原始協(xié)議的低級(jí)訪問,在需要執(zhí)行某些特殊操作時(shí)使用,如發(fā)送ICMP報(bào)文。SOCK_RAM通常僅限于高級(jí)用戶或管理員運(yùn)行的程序使用。 注:這些常量都是套接字類型,應(yīng)用于 協(xié)議號(hào)通常為零,可以省略,或者在地址族為 socket.bind(address) #將socket綁定到地址(常用于服務(wù)端) address地址的格式取決于地址族, 在AF_INET下,以元組(host,port)的形式表示地址。 socket.listen([backlog]) #啟用服務(wù)器以接受連接(常用于服務(wù)端)。 backlog >=0,指定系統(tǒng)在拒絕新連接之前將允許的未接受連接的數(shù)量。如果未指定,則選擇默認(rèn)的合理值。 socket.accept() #接收一個(gè)連接.該socket 必須要綁定一個(gè)地址和監(jiān)聽連接.返回值是一對(duì) conn是socket對(duì)象,可以在該連接上發(fā)送和接收數(shù)據(jù),address是連接另一端的地址。 socket.recv(bufsize[, flags]) #從socket接收數(shù)據(jù),返回值是一個(gè)代表所收到的數(shù)據(jù)的字節(jié)對(duì)象。 一次性接收的最大數(shù)據(jù)量由bufsize指定, 參數(shù)flags通常忽略。 socket.send(data[, flags]) #將數(shù)據(jù)發(fā)送到socket。 python3中只能發(fā)送bytes類型的數(shù)據(jù)。 socket.connect(address) #連接到遠(yuǎn)程socket(常用于客戶端) 如果連接被信號(hào)中斷,則該方法等待直到連接完成,或者如果信號(hào)處理程序沒有引發(fā)異常并且套接字正在阻塞或者已經(jīng)阻塞,則在超時(shí)時(shí)引入 socket.close() #關(guān)閉socket 注:被調(diào)用后,連接斷開,socket不能在發(fā)送數(shù)據(jù),連接另一端也將不在接收數(shù)據(jù)。 |
|