在學習python的過程中,網(wǎng)絡(luò)編程是必不可少的一課。而網(wǎng)絡(luò)編程中,最基礎(chǔ)的課程就是socket編程。socket編程是一種高效的程序間傳輸數(shù)據(jù)的方式,很多語言都有提供socket的支持。python也提供了這樣的技術(shù)支持。接下來的文章,小編將用一個socket的實際項目,來讓各位小伙伴了解什么是socket網(wǎng)絡(luò)編程。
什么是socket?
socket,中文翻譯為套接字。它是一種對網(wǎng)絡(luò)中不同主機上的應用進程(或者相同主機的不同應用進程)之間進行雙向通信的端點的抽象。實際上就是兩個網(wǎng)絡(luò)各種通信連接中的端點。它的作用就是完成應用間的數(shù)據(jù)傳輸。
套接字技術(shù)簡單的來講就是通過socket,將兩個應用進行連接,連接之后就能進行數(shù)據(jù)傳輸了。socket只是實現(xiàn)連接的方法。 小編認為套接字這個翻譯并不能直接反映出這門技術(shù)的特點(過于生澀),socket可以被翻譯為插座,而實際上套接字技術(shù)更像是軟件上的“插座”和“插頭”。漢語中的套接,是一種水管對接的技術(shù),使用一個套接管將兩端的水管連接起來,這種技術(shù)就叫套接,所以是不是能理解什么是套接字了呢?
更多關(guān)于socket協(xié)議的介紹,可以前往websocket協(xié)議進行查看。
怎么使用socket?
不同語言實現(xiàn)套接字的方式不同,python有專門實現(xiàn)套接字的包。只需要??import
?? 相應的包,就可以進行套接字編程。
創(chuàng)建socket連接后可以通過??recv()?
?和??send()?
?的方法來獲取和發(fā)送socket之間傳輸?shù)臄?shù)據(jù)。
接下來就用一個實例代碼來介紹一下怎么使用socket吧!
python項目實戰(zhàn)
server.py
# 導入 socket模塊
import socket
# 創(chuàng)建 socket 對象
serversocket = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
# 獲取本地主機名
host = socket.gethostname()
port = 9999
# 綁定端口
serversocket.bind((host, port))
# 設(shè)置最大連接數(shù),超過后排隊
serversocket.listen(5)
while True:
# 建立客戶端連接
clientsocket, addr = serversocket.accept()
print("連接地址: %s" % str(addr))
msg = '歡迎訪問W3Cschool教程!' + "\r\n"
clientsocket.send(msg.encode('utf-8'))
clientsocket.close()
client.py
# 導入 socket 模塊
import socket
# 創(chuàng)建 socket 對象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 獲取本地主機名
host = socket.gethostname()
# 設(shè)置端口號
port = 9999
# 連接服務(wù),指定主機和端口
s.connect((host, port))
# 接收小于 1024 字節(jié)的數(shù)據(jù)
msg = s.recv(1024)
s.close()
print(msg.decode('utf-8'))
如果理解不了socket代碼,也可以前往python網(wǎng)絡(luò)編程進行學習。
小結(jié)
以上就是python實現(xiàn)socket通信的方法。掌握socket通信對于python的多端開發(fā)(比如服務(wù)器客戶端,或者兩個點對點應用)是十分重要的,各位小伙伴一定要好好學習啊。