亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用不同語言編寫的 ZeroMQ 套接字的兼容性

用不同語言編寫的 ZeroMQ 套接字的兼容性

Go
慕村9548890 2021-12-20 16:34:30
我已經構建了一個基于 python 編寫的應用程序ZeroMQ,但現在我面臨著性能問題。所以我決定使用 Golang 重寫我的應用程序的一些模塊。但是當我嘗試在不同語言實現的套接字之間建立消息傳遞時,任何事情都不起作用。到目前為止,我已經進行了搜索,但沒有找到有關ZeroMQ使用不同語言的兼容性問題的任何信息。所以問題是:我可以使用golang進行基于ZeroMQpython編寫的客戶端的服務器實現來連接它嗎?還是我必須只使用一種語言?編輯:這是我正在嘗試正常工作的典型服務器和客戶端服務器:import zmqctx = zmq.Context()sock = ctx.socket(zmq.REP)sock.bind("tcp://*:57000")msg = sock.recv()客戶:package mainimport (    zmq "github.com/pebbe/zmq4")func main() {    ctx, _ := zmq.NewContext()    sock, _ := ctx.NewSocket(zmq.REQ)    sock.Connect("tcp://localhost:57000")    sock.Send("simple message", 0)}服務器卡在 sock.recv()
查看完整描述

2 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

編程語言能夠相互通信——是的,你可以用 Go 編寫一個服務器,用 Python 編寫一個客戶端,并讓它們相互通信。

如果您嘗試使用原始套接字進行通信,請查看所需語言的文檔并確保序列化數據在結構上匹配。

例如,您可以決定一個結構并在Python或代碼中實現您的有效負載,然后在Go 中匹配該結構(Go中可能有更好的/stdlib 方式;我對這種語言的經驗不是很豐富)。擔心這些細節的潛在維護和實現頭痛是人們使用更高級別協議的原因——這正是 ZeroMQ 的一個很好的用例。

如果您使用消息隊列作為操作的主干,只需將其用作共享協議即可。如果您的 Python 代碼可以與 ZeroMQ 對話,那么它就在正確地完成它的工作——您的 Go 代碼不需要知道它正在與 Python 對話。

在這種情況下,您的新Go 服務器將綁定到 ZeroMQ,您的Python 客戶端將綁定到 ZeroMQ,并且您的兩種異構語言不需要相互了解。


查看完整回答
反對 回復 2021-12-20
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

這有點晚了,但我在嘗試找到 golang-to-python 0mq 實現時發現了這篇文章。


在我的 golang 代碼中,我剛剛更改zmq為zmq4,一切都對我有用:


import (

    zmq4 "github.com/pebbe/zmq4"

)


func main() {


    ctx, _ := zmq4.NewContext()

    sock, _ := ctx.NewSocket(zmq4.REQ)


    sock.Connect("tcp://localhost:57000")

    sock.Send("simple message", 0)

}


查看完整回答
反對 回復 2021-12-20
  • 2 回答
  • 0 關注
  • 283 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號