第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

在 GO 中使用 UDP 的 RPC

在 GO 中使用 UDP 的 RPC

Go
慕的地6264312 2021-08-30 15:15:18
Unity3D 網絡庫使用 UDP 并具有用于 RPC 調用的方法。我試圖讓我的服務器通過 UDP 使用 RPC,但我遇到了一些麻煩。這是我現在得到的基本服務器代碼:type Args struct {  X, Y int}type RequestHandler struct{}func (self *RequestHandler) Add(args *Args, reply *int) error {  *reply = args.X + args.Y  return nil}func main() {  addr := net.UDPAddr{ Port: 5127, IP: net.ParseIP("127.0.0.1") }   handler := new(RequestHandler)  rpc.Register(handler)  conn, err := net.ListenUDP("udp", &addr)  defer conn.Close()  if err != nil {    panic(err)  }  for {    go rpc.ServeConn(conn)  }}這是客戶端代碼:type Args struct {  X, Y int}func main() {  client, err := rpc.Dial("udp", "127.0.0.1:5127")  if err != nil { log.Fatal("dialing:", err) }  // Synchronous call  args := &Args{7,8}  var reply int  err = client.Call("RequestHandler.Add", args, &reply)  if err != nil {    log.Fatal("arith error:", err)  }  fmt.Printf("Result: %d + %d = %d", args.X, args.Y, reply)}當我運行這些時,它們都掛了,什么也沒發(fā)生。我究竟做錯了什么?
查看完整描述

1 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

由于 UDP 套接字的性質,基于 UDP 的 RPC 需要特殊的 UDP 感知處理。

沒有連接,只是發(fā)送到一個地址的數據報。

為了讓客戶端得到回復,它必須設置一個監(jiān)聽套接字,然后將它與請求一起發(fā)送到服務器。然后服務器將回復客戶端地址。

net/rpc 對非面向連接的傳輸(即:UDP)沒有任何特殊情況處理

我不知道有任何實現無連接 RPC for go 的包,因此您可能必須在這里推出自己的包。


查看完整回答
反對 回復 2021-08-30
  • 1 回答
  • 0 關注
  • 399 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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