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

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

當我的客戶端連接時,簡單的 RPC 服務器不會應答

當我的客戶端連接時,簡單的 RPC 服務器不會應答

Go
呼啦一陣風 2021-07-28 21:09:22
我采用并改編了Golang RPC 中的示例,制作了一個簡單的 RPC 服務器,作為我想要完成的實際任務的測試運行。但無論我嘗試過什么,我最終都會讓客戶得到2014/03/21 13:28:41 dialing: dial-http tcp MYPC:61740: unexpected HTTP response: 404 Not Found我已經嘗試使用MYPC:0,127.0.0.1:61470,MYPC:61470以及主題為服務器的其他變體。也在本地和兩臺不同的計算機上嘗試過(注意我在 Windows 上使用的是 Go 1.2)。通常使用 Go 我發現它可以直接調試,但即使閱讀 rpc pacakge 的源代碼這次也無濟于事 - 但是我確實掌握了 :0 提供可用端口的技巧。服務器可以通過運行exe運行,客戶端可以通過服務器輸出的端口運行 chat -c -server=127.0.0.1:8082。以下代碼實際上有什么問題?package mainimport ("flag""log""net""net/http""net/rpc")type Chat stringfunc (t *Chat) Msg(msg string, bytes *int) error {    *bytes = len(msg)    return nil}func main() {    server := flag.String("server", "", "Server and port")    client := flag.Bool("c", false, "Make me a client")    flag.Parse()    log.Println("Server: ", *server)    if !(*client) {        chat := new(Chat)        rpc.Register(chat)        l, e := net.Listen("tcp", *server)        if e != nil {            log.Fatal("listen error:", e)        }        log.Println(l.Addr().String())        go rpc.Accept(l)        http.Serve(l, nil)    } else {        log.Println("Client connecting to", *server)        // !! The error occurs here        client, err := rpc.DialHTTP("tcp", *server)        if err != nil {            log.Fatal("dialing: ", err)        }        var reply int        err = client.Call("Chat.Msg", "Make it so!", &reply)        if err != nil {            log.Fatal("chat error:", err)        }        log.Println("Msg: returned", reply)}}
查看完整描述

1 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

我認為您在 rpc.Register(chat) 之后缺少 rpc.HandleHTTP()。嘗試將您的代碼更改為


...

rpc.Register(chat)

rpc.HandleHTTP()

...

它以這種方式對我有用,我得到了


2014/03/20 18:31:21 Server:  localhost:55209

2014/03/20 18:31:21 Client connecting to localhost:55209

2014/03/20 18:31:21 Msg: returned 11

而你不需要go rpc.Accept(l). 至少對我來說,它在沒有這條線的情況下工作。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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