一、GMSL2接口介紹
GMSL2接口是將數據從一個傳輸端口發送到另一個接收端口的接口。這個接口是面向消息的,允許您發送和接收消息,這些消息已經被編碼成字節序列,可以在傳輸之前或之後進行解碼。
下面是一個運用GMSL2接口的示例,這個例子是從服務器端向客戶端發送一個簡單的消息:
server = GMSL2Server()
client = GMSL2Client()
server.bind(EXAMPLE_PORT)
client.connect(EXAMPLE_HOST, EXAMPLE_PORT)
msg = 'Hello, World!'
server.send(msg.encode())
received_bytes = client.receive()
received_msg = received_bytes.decode()
print(received_msg)
在這個例子中,我們創建了一個服務器和一個客戶端,綁定了端口號。服務器發送了一條消息,客戶端成功接收到並打印出來了。
二、GMS網絡接口
1、建立網絡連接
GMS網絡接口可以用於建立網絡連接。以下是一個建立網絡連接的示例:
import socket
import gmsl
# 創建一個 Socket 對象
s = socket.socket()
# 獲取本地主機名
host = socket.gethostname()
# 設置端口號
port = 12345
# 連接服務,指定主機和端口
s.connect((host, port))
# 發送消息
msg = "Hello, GMS!"
s.send(msg.encode())
# 接收消息
message = s.recv(1024)
# 關閉 Socket
s.close()
在這個例子中,我們首先創建一個 Socket 對象,然後使用 socket.gethostname() 獲取本地主機名。接着,我們指定端口號並連接到服務端。之後,我們向服務端發送消息,等待服務器返回消息,最後關閉 Socket。
2、動態綁定和解綁定端口
GMS網絡接口允許動態綁定和解綁定端口。以下是一個動態綁定和解綁定端口的示例:
import socket
import gmsl
# 創建一個 Socket 對象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 獲取本地主機名
host = socket.gethostname()
# 設置端口號
port = 12345
# 綁定端口
s.bind((host, port))
# 等待客戶端連接
s.listen(5)
# 等待客戶端連接
while True:
c, addr = s.accept()
print("連接地址:", addr)
# 發送消息到客戶端
msg = '連接成功!'
c.send(msg.encode())
# 關閉連接
c.close()
在這個例子中,我們創建了一個 Socket 對象,指定了主機和端口號並綁定了端口。我們使用 s.listen() 方法等待客戶端連接。我們還創建了一個無限循環,每當有一個客戶端連接到服務器時,服務器就會向客戶端發送一條消息並關閉連接。
3、同時處理多個連接
GMS網絡接口也允許同時處理多個連接。以下是一個同時處理多個連接的示例:
import socket
import threading
# 客戶端處理函數
def client_handler(client_socket):
# 獲取客戶端地址
client_address = client_socket.getpeername()
print(f'客戶端地址: {client_address}')
# 向客戶端發送歡迎消息
welcome_message = '歡迎光臨!'.encode()
client_socket.send(welcome_message)
# 客戶端消息循環
while True:
# 接收客戶端消息
client_message = client_socket.recv(1024)
if not client_message:
break
# 向客戶端發送消息
server_message = '服務端已接收您的消息!'.encode()
client_socket.send(server_message)
# 關閉客戶端連接
client_socket.close()
# 創建 Socket 服務端
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 獲取本地主機名
host = socket.gethostname()
# 設置端口號
port = 12345
# 綁定端口
server_socket.bind((host, port))
# 開始監聽
server_socket.listen(5)
while True:
# 等待連接
print('等待連接...')
client_socket, addr = server_socket.accept()
# 創建新線程處理客戶端連接
client_thread = threading.Thread(target=client_handler, args=[client_socket])
# 啟動新線程
client_thread.start()
在這個例子中,我們創建了一個 Socket 對象並綁定了端口。我們使用 s.listen() 方法以開始接受客戶端連接。當客戶端連接時,我們創建一個新的線程,並在該線程中處理客戶端連接。主線程等待客戶端連接,而處理客戶端連接的線程則與客戶端進行通信,並在必要時關閉連接。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/195974.html