From a94bef37f1d06fa4de998cdabf089c7539ea557b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=8C=E6=B5=B7=E4=BB=B2=E5=AD=90?= Date: Sat, 18 Sep 2021 16:56:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E4=BA=8Ehttp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/main.go | 34 ++++++++++++++++++++++++++++++++++ go.mod | 3 +++ main.go | 18 ++++++++++++++++++ server/hello-server.go | 19 +++++++++++++++++++ 4 files changed, 74 insertions(+) create mode 100644 client/main.go create mode 100644 go.mod create mode 100644 main.go create mode 100644 server/hello-server.go 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 +}