diff --git a/client/main.go b/client/main.go index 856f285..cd91149 100644 --- a/client/main.go +++ b/client/main.go @@ -21,7 +21,6 @@ func main() { log.Fatal("dialing : ", err) } - //Synchronous call args := server.HelloRequest{ Name: "tom", } diff --git a/client_tcp/main.go b/client_tcp/main.go new file mode 100644 index 0000000..346914f --- /dev/null +++ b/client_tcp/main.go @@ -0,0 +1,27 @@ +package main + +import ( + "fmt" + "log" + "net/rpc" + + "myschools.me/suguo/rpc-sample/server" +) + +func main() { + client, err := rpc.Dial("tcp", "127.0.0.1:1234") + if err != nil { + panic(err) + } + + defer client.Close() + 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/main.go b/main.go index 2da93df..c070841 100644 --- a/main.go +++ b/main.go @@ -1,18 +1,36 @@ package main import ( - "fmt" - "net/http" + "log" + "net" "net/rpc" + "strings" "myschools.me/suguo/rpc-sample/server" ) func main() { + // rpc.HandleHTTP() + // err := http.ListenAndServe(":1234", nil) + // if err != nil { + // fmt.Println(err.Error()) + // } + defer func() { + err := recover() + if err == nil { + log.Fatal("no error") + } + if !strings.Contains(err.(error).Error(), "reading body EOF") { + log.Fatal("expected `reading body EOF', got", err) + } + }() + rpc.Register(&server.Hello{}) - rpc.HandleHTTP() - err := http.ListenAndServe(":1234", nil) + + listen, err := net.Listen("tcp", "127.0.0.1:1234") //端口为0表示任意端口 if err != nil { - fmt.Println(err.Error()) + panic(err) } + defer listen.Close() + rpc.Accept(listen) }