Python Socket編程實(shí)現(xiàn)網(wǎng)絡(luò)編程
對(duì)于有經(jīng)驗(yàn)的開(kāi)發(fā)人員來(lái)說(shuō),掌握的編程語(yǔ)言應(yīng)該是不少的。在這些編程語(yǔ)言中,網(wǎng)絡(luò)編程的應(yīng)用時(shí)必不可少的。其中Python也是這樣的編程語(yǔ)言。我們今天將會(huì)在這里為大家詳細(xì)介紹一下Python Socket編程再網(wǎng)絡(luò)編程中的應(yīng)用。#t#
Socket:套接字
套接字好比電話的插口,主機(jī)和端口就好比區(qū)號(hào)和電話號(hào)碼,主機(jī):是你要連接到哪里,端口:是從那個(gè)口子連過(guò)去,和大多數(shù)語(yǔ)言一樣,Python 支持面向連接和無(wú)連接。
面向連接即需要先連接然后通訊, 面向連接主要協(xié)議就是傳輸控制協(xié)議(tcp),要?jiǎng)?chuàng)建tcp套接字時(shí)需要指定套接字類(lèi)型為 SOCK_STRAM,表達(dá)了他作為流套接字的特點(diǎn)。
無(wú)連接,顧名思義無(wú)需建立連接就可以進(jìn)行通訊,這時(shí)數(shù)據(jù)到達(dá)順序、可靠性就無(wú)法保證了。實(shí)現(xiàn)這種連接的協(xié)議就是用戶數(shù)據(jù)包協(xié)議(udp)。創(chuàng)建UDP時(shí)需要指定套接字類(lèi)型為 SOCK_DGRAM。
創(chuàng)建 Socket:
創(chuàng)建Python Socket編程用到 Socket模塊函數(shù),語(yǔ)法為:
- Socket(Socket_family,Socket_type,protocol=0)
Socket_family不是 AF_VNIX 就是 AF_INET,通常使用的是AF_INET(不明白可以去查些資料),Socket_type可以是 SOCK_STREAM 或者 SOCK_DGRAM,protocol一般不填,就默認(rèn)為0
創(chuàng)建一個(gè)TCP/IP的套接字:
- tcpSock = Socket(Socket.AF_INET,Socket.SOCK_STRAM)
創(chuàng)建一個(gè)UDP/IP的套接字:
- udpSock= Socket(Socket.AF_INET,Socket.SOCK_DGRAM)
創(chuàng)建好套接字以后,我們需要使用套接字的內(nèi)建方法,常用的方法:
服務(wù)器端
- s.bind() 綁定地址(主機(jī),端口)到套接字
- s.listen() 開(kāi)始監(jiān)聽(tīng)
- s.accept() 被動(dòng)接受 tcp客戶端連接(阻塞式),等待連接的到來(lái)
客戶端
- s.connet() 主動(dòng)初始化tcp服務(wù)器連接
- s.connet_ex() connet擴(kuò)展版本,出錯(cuò)時(shí)返回錯(cuò)誤代碼,不拋出異常
- s.recv() 接受tcp數(shù)據(jù)
- s.send() 發(fā)送數(shù)據(jù)
- s.close() 關(guān)閉套接字
常用的Python Socket編程方法如上,還有一些方法大家可以查詢些資料。