色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

go json rpc http

林國瑞2年前8瀏覽0評論

Go的標準庫中提供了一個json-rpc包,該包實現(xiàn)了json(JavaScript對象表示法)遠程過程調用(RPC)規(guī)范。

json-rpc包可以在HTTP通信協(xié)議上使用,這意味著可以使用json-rpc將客戶端應用程序和服務器進行通信。

下面是一個使用json rpc http實現(xiàn)簡單加法的示例:

package main
import (
"fmt"
"log"
"net/http"
"net/rpc"
"net/rpc/jsonrpc"
)
type Args struct {
A, B int
}
type Arith int
func (t *Arith) Add(args *Args, reply *int) error {
*reply = args.A + args.B
return nil
}
func main() {
arith := new(Arith)
rpc.Register(arith)
rpc.HandleHTTP()
err := http.ListenAndServe(":1234", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}

在上面的代碼中,我們首先定義了Args結構體,它擁有兩個屬性A和B,用于存儲加法的操作數(shù)。然后,我們定義了一個Arith類型作為RPC服務的接收者。這里我們實現(xiàn)Add函數(shù),用于計算兩個整數(shù)的和。

在主函數(shù)中,我們將Arith類型注冊為RPC服務,并啟動HTTP服務器。一旦服務器啟動,我們就可以使用HTTP方法調用這個RPC服務。

下面是客戶端的代碼:

package main
import (
"fmt"
"log"
"net/rpc/jsonrpc"
)
type Args struct {
A, B int
}
func main() {
client, err := jsonrpc.Dial("tcp", "localhost:1234")
if err != nil {
log.Fatal("dialing:", err)
}
args := &Args{7, 8}
var reply int
err = client.Call("Arith.Add", args, &reply)
if err != nil {
log.Fatal("arith error:", err)
}
fmt.Printf("Arith: %d+%d=%d", args.A, args.B, reply)
}

我們使用jsonrpc包中的Dial函數(shù)連接到服務器端口并調用Arith.Add函數(shù)。最后,我們從服務器返回整數(shù)值,并打印出計算結果。