簡體   English   中英

為什么使用 .net/rpc/jsonrpc 編解碼器發送“大”數組/切片超過 unix 套接字連接掛起?

[英]Why sends of "large" array/slice using net/rpc/jsonrpc codec over unix socket connection hang?

我正在嘗試使用 golang 的內置net/rpc服務器和客戶端以及net/rpc/jsonrpc編解碼器發送一組數據作為 rpc 回復。 但是我遇到了一些麻煩。

我發送的數據大約為 48 個字節,客戶端將掛在client.Call中。

我做了一個復制問題的游樂場: https://go.dev/play/p/_IQ9SF7TSdc

如果將上述程序中的常量“N”更改為 5,一切都會按預期進行!

另一個 playground 顯示了問題似乎只有在有問題的切片/數組超過 49 字節時才會出現: https://go.dev/play/p/R8CQa0mv7vB

有誰知道可能是什么問題? Golang 對數組和切片數據類型的測試並不完全是為“大”arrays 設計的。 提前致謝。

在監聽器設置的那一行:

listener, err := net.ListenUnix("unixpacket", &net.UnixAddr{RPCPath, "unixpacket"})

不要使用unixpacket 它對應於不是 stream 協議的底層 SOCK_SEQPACKET。 大文件可能以接收方無法處理的方式分成數據包。 使用unix代替,它對應於 SOCK_STREAM。 有關更多信息,請參閱此 SO 帖子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM