在 Python 中,你可以使用套接字(socket)模塊來創(chuàng)建和處理本地套接字,也稱為 Unix 域套接字。本地套接字提供了進(jìn)程間通信的能力,不需要通過網(wǎng)絡(luò)協(xié)議棧進(jìn)行通信。以下是使用本地套接字的基本示例:
1. 創(chuàng)建本地套接字服務(wù)器:
python
import socket
# 創(chuàng)建本地套接字
server_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
# 指定套接字文件路徑
socket_file = '/tmp/my_socket'
# 綁定套接字到指定文件
server_socket.bind(socket_file)
# 監(jiān)聽連接
server_socket.listen(1)
# 等待客戶端連接
client_socket, client_address = server_socket.accept()
# 接收客戶端數(shù)據(jù)
data = client_socket.recv(1024)
# 處理數(shù)據(jù)
# ...
# 關(guān)閉套接字
client_socket.close()
server_socket.close()
在上面的代碼中,我們首先創(chuàng)建了一個本地套接字服務(wù)器,并將其綁定到指定的套接字文件(`socket_file`)。然后,我們通過調(diào)用 `listen()` 方法開始監(jiān)聽連接,并通過 `accept()` 方法等待客戶端連接。一旦客戶端連接成功,我們可以使用 `recv()` 方法接收客戶端發(fā)送的數(shù)據(jù),并進(jìn)行處理。最后,我們關(guān)閉套接字。
2. 創(chuàng)建本地套接字客戶端:
python
import socket
# 創(chuàng)建本地套接字
client_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
# 指定套接字文件路徑
socket_file = '/tmp/my_socket'
# 連接到服務(wù)器
client_socket.connect(socket_file)
# 發(fā)送數(shù)據(jù)到服務(wù)器
data = b"Hello, server!"
client_socket.send(data)
# 關(guān)閉套接字
client_socket.close()
在上面的代碼中,我們創(chuàng)建了一個本地套接字客戶端,并通過 `connect()` 方法連接到服務(wù)器的套接字文件(`socket_file`)。然后,我們使用 `send()` 方法發(fā)送數(shù)據(jù)到服務(wù)器。最后,我們關(guān)閉套接字。
請注意,在使用本地套接字時,你需要確保套接字文件的路徑在系統(tǒng)中是唯一的,并具有適當(dāng)?shù)臋?quán)限。同時,服務(wù)器和客戶端的套接字類型(如 `SOCK_STREAM`)和地址族(如 `AF_UNIX`)應(yīng)該匹配。
以上示例展示了如何在 Python 中使用本地套接字進(jìn)行進(jìn)程間通信。你可以根據(jù)實(shí)際需求擴(kuò)展這些示例,并根據(jù)具體場景進(jìn)行適當(dāng)?shù)奶幚砗湾e誤處理。