代码拉取完成,页面将自动刷新
package main
import (
"fmt"
"log"
"net"
"net/rpc"
"gitee.com/infraboard/go-course/day15/pbrpc/codec/client"
"gitee.com/infraboard/go-course/day15/pbrpc/service"
)
// 约束客户端
var _ service.HelloService = (*HelloServiceClient)(nil)
type HelloServiceClient struct {
*rpc.Client
}
func DialHelloService(network, address string) (*HelloServiceClient, error) {
// c, err := rpc.Dial(network, address)
// if err != nil {
// return nil, err
// }
// 建立链接
conn, err := net.Dial("tcp", "localhost:1234")
if err != nil {
log.Fatal("net.Dial:", err)
}
// 采用Json编解码的客户端
c := rpc.NewClientWithCodec(client.NewClientCodec(conn))
return &HelloServiceClient{Client: c}, nil
}
func (p *HelloServiceClient) Hello(req *service.Request, resp *service.Response) error {
return p.Client.Call(service.HelloServiceName+".Hello", req, resp)
}
func main() {
client, err := DialHelloService("tcp", "localhost:1234")
if err != nil {
log.Fatal("dialing:", err)
}
resp := &service.Response{}
err = client.Hello(&service.Request{Value: "alice"}, resp)
if err != nil {
log.Fatal(err)
}
fmt.Println(resp)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。