- Published on
Golang的一些东西(十二)
- Authors
- Name
- Et cetera
使用内置 rpc 包建立服务
// server.go
package main
import (
"net"
"net/rpc"
)
type HelloService struct{}
func (s *HelloService) Hello(request string, response *string) error {
// 返回值是通过修改 response 的值
*response = "Hello" + request
return nil
}
func main() {
// 1. 实例化一个 server
listener, _ := net.Listen("tcp", ":1234")
// 2. 注册处理逻辑 handler
_ = rpc.RegisterName("HelloService", &HelloService{})
// 3. 启动服务
conn, _ := listener.Accept() // 当一个新的链接进来时,rpc 会接管逻辑
rpc.ServeConn(conn)
}
// client.go
package main
import (
"fmt"
"net/rpc"
)
func main() {
// 1. 建立连接
client, err := rpc.Dial("tcp", "localhost:1234")
if err != nil {
panic("连接失败")
}
var response string
err = client.Call("HelloService.Hello", "Aimyon", &response)
if err != nil {
panic("调用失败")
}
fmt.Println(response)
}