在Ruby中,使用UDP通信處理數(shù)據(jù)包需要使用Socket
類。以下是一個簡單的示例,展示了如何創(chuàng)建一個UDP服務(wù)器和客戶端,以及如何發(fā)送和接收數(shù)據(jù)包。
UDP服務(wù)器:
require 'socket'
# 創(chuàng)建一個UDP套接字
server_socket = UDPSocket.new
# 綁定到本地地址和端口
server_socket.bind('0.0.0.0', 12345)
puts "Server is listening on port 12345..."
while true
# 接收數(shù)據(jù)包
data, address = server_socket.recvfrom(1024)
puts "Received message from #{address}: #{data}"
# 發(fā)送響應(yīng)給客戶端
server_socket.send("Response from server!".encode, 0, address)
end
UDP客戶端:
require 'socket'
# 創(chuàng)建一個UDP套接字
client_socket = UDPSocket.new
# 連接到服務(wù)器
client_socket.connect('127.0.0.1', 12345)
# 發(fā)送數(shù)據(jù)包給服務(wù)器
client_socket.send("Hello, server!".encode, 0)
# 接收服務(wù)器的響應(yīng)
response, _ = client_socket.recvfrom(1024)
puts "Received response from server: #{response.decode}"
# 關(guān)閉套接字
client_socket.close
在這個示例中,我們首先創(chuàng)建了一個UDP套接字,然后將其綁定到本地地址和端口。服務(wù)器使用recvfrom
方法接收數(shù)據(jù)包,并在接收到數(shù)據(jù)包后發(fā)送響應(yīng)給客戶端??蛻舳耸褂?code>connect方法連接到服務(wù)器,然后發(fā)送數(shù)據(jù)包并接收服務(wù)器的響應(yīng)。
請注意,這個示例僅用于演示目的,實際應(yīng)用中可能需要根據(jù)需求進(jìn)行更多的錯誤處理和優(yōu)化。