[英]A simple TCP messaging protocol?
我想通過TCP在Ruby進程之間發送消息,而不使用可能限制潛在消息內容的結束字符。 這排除了天真的socket.puts / gets方法。 在標准庫中的某處是否有基本的TCP消息實現? (我想避免讓Drb保持簡單。)
似乎沒有規范,可重用的解決方案。
所以這是檔案的基本實現:
module Messaging
# Assumes 'msg' is single-byte encoded
# and not larger than 4,3 GB ((2**(4*8)-1) bytes)
def dispatch(msg)
write([msg.length].pack('N') + msg)
end
def receive
if (message_size = read(4)) # sizeof (N)
message_size = message_size.unpack('N')[0]
read(message_size)
end
end
end
# usage
message_hub = TCPSocket.new('localhost', 1234).extend(Messaging)
在這種情況下發送字符串的通常方法是發送一個整數(你喜歡編碼)的字符串大小,然后是那么多字節。 您可以通過對該整數使用類似UTF-8的方案來節省空間但仍允許任意大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.