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

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

Go 中的簡單 RPC 調用

Go 中的簡單 RPC 調用

Go
慕斯709654 2021-07-02 15:00:09
我正在嘗試使用 Go 中的 RPC 調用來獲得最小的應用程序。我大量借鑒了在線示例,正如您從我的代碼中看到的:server.go:package mainimport (    [...])type InfoDumper intfunc (s *InfoDumper) Dump(request string, reply *string) error {    fmt.Println("Woooh imma deliverin stuff\n")    current_time := time.Now()    h:= sha1.New()    var barray []byte    copy(barray, request)    hash_rq := h.Sum(barray)    *reply = request + "\n" + current_time.Format(time.ANSIC) + "\n"  + string(hash_rq) + "\n"    return nil}func main() {    server := new(InfoDumper)    rpc.Register(server)    rpc.HandleHTTP()    l, e := net.Listen("tcp", "127.0.0.1:40000")    if e != nil {        fmt.Println(e)    }    http.Serve(l, nil)}我能看到的唯一區別是我寫的http.Serve(l, nil)不是go http.Serve(l, nil); 這是因為寫入go使我的服務器立即終止。InfoDump 應該回復發送的任何內容的副本,請求的時間和哈希值。這就是現在正在發生的事情:我在終端中運行 server.go我在另一個終端中運行 client.go,大約一秒鐘后打印“wooh server is ok”我輸入一些東西并在客戶端按 Enter要么什么也沒發生,要么在客戶端打印“rpc:客戶端協議錯誤:意外的 EOF”如果什么也沒發生,終止服務器(即點擊 Control-C)使客戶端打印上面的錯誤在任何一種情況下,“Woooh imma Deliverin stuff”都不會顯示在服務器端......這是在課堂上完成的,作為在進行更嚴肅的練習之前熟悉 Go 中的 RPC 的初步步驟;所有其他學生都設法使這一步工作,看著這段代碼,看不出與他們的區別。有沒有人看到這段代碼有什么問題?
查看完整描述

1 回答

?
喵喵時光機

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

正如我在注意到郵件列表響應,則需要使用DialHTTP如果你想連接到RPC服務器,您已經使用服務HandleHTTP。

我在郵件列表上做了一些關于你的代碼的其他注釋(包括樣式:使用 gofmt 和 MixedCaps,每個Effective Go,并確保避免錯誤)。



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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