commit a94bef37f1d06fa4de998cdabf089c7539ea557b Author: 凌海仲子 Date: Sat Sep 18 16:56:04 2021 +0800 基于http diff --git a/client/main.go b/client/main.go new file mode 100644 index 0000000..856f285 --- /dev/null +++ b/client/main.go @@ -0,0 +1,34 @@ +package main + +import ( + "fmt" + "log" + "net/rpc" + "os" + + "myschools.me/suguo/rpc-sample/server" +) + +func main() { + if len(os.Args) != 2 { + fmt.Println("Usage: ", os.Args[0], "server") + os.Exit(1) + } + serverAddress := os.Args[1] + + client, err := rpc.DialHTTP("tcp", serverAddress+":1234") + if err != nil { + log.Fatal("dialing : ", err) + } + + //Synchronous call + args := server.HelloRequest{ + Name: "tom", + } + var reply server.HelloResponse + err = client.Call("Hello.Say", args, &reply) + if err != nil { + log.Fatal("hello error : ", err) + } + fmt.Printf("Result: %s \n", reply.Reply) +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..3b94e58 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module myschools.me/suguo/rpc-sample + +go 1.17 diff --git a/main.go b/main.go new file mode 100644 index 0000000..2da93df --- /dev/null +++ b/main.go @@ -0,0 +1,18 @@ +package main + +import ( + "fmt" + "net/http" + "net/rpc" + + "myschools.me/suguo/rpc-sample/server" +) + +func main() { + rpc.Register(&server.Hello{}) + rpc.HandleHTTP() + err := http.ListenAndServe(":1234", nil) + if err != nil { + fmt.Println(err.Error()) + } +} diff --git a/server/hello-server.go b/server/hello-server.go new file mode 100644 index 0000000..bd754c5 --- /dev/null +++ b/server/hello-server.go @@ -0,0 +1,19 @@ +package server + +type HelloRequest struct { + Name string +} + +type HelloResponse struct { + Reply string +} + +type Hello struct { +} + +func (*Hello) Say(req HelloRequest, reply *HelloResponse) error { + *reply = HelloResponse{ + Reply: "hello " + req.Name, + } + return nil +}