App下載

python 程序間如何進行通信?詳解python socket編程

猿友 2021-06-24 10:54:00 瀏覽數(shù) (6002)
反饋

在學習python的過程中,網(wǎng)絡編程是必不可少的一課。而網(wǎng)絡編程中,最基礎(chǔ)的課程就是socket編程。socket編程是一種高效的程序間傳輸數(shù)據(jù)的方式,很多語言都有提供socket的支持。python也提供了這樣的技術(shù)支持。接下來的文章,小編將用一個socket的實際項目,來讓各位小伙伴了解什么是socket網(wǎng)絡編程。

什么是socket?

socket,中文翻譯為套接字。它是一種對網(wǎng)絡中不同主機上的應用進程(或者相同主機的不同應用進程)之間進行雙向通信的端點的抽象。實際上就是兩個網(wǎng)絡各種通信連接中的端點。它的作用就是完成應用間的數(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
# 連接服務,指定主機和端口
s.connect((host, port))
# 接收小于 1024 字節(jié)的數(shù)據(jù)
msg = s.recv(1024)
s.close()
print(msg.decode('utf-8'))

如果理解不了socket代碼,也可以前往python網(wǎng)絡編程進行學習。

小結(jié)

以上就是python實現(xiàn)socket通信的方法。掌握socket通信對于python的多端開發(fā)(比如服務器客戶端,或者兩個點對點應用)是十分重要的,各位小伙伴一定要好好學習啊。


0 人點贊