欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > golang中rpc

golang中rpc

2025/2/25 14:50:27 来源:https://blog.csdn.net/m0_72363694/article/details/143804204  浏览:    关键词:golang中rpc

c客户端和服务端处理方式要一致否则客户端访问不了

	rpc.RegisterName("HelloService", new(HelloService))rpc.HandleHTTP() //客户端使用rpc.DialHTTPif err := http.ListenAndServe("127.0.0.1:8080", nil); err != nil {log.Fatal("serve error:", err)}

上面的的rpc服务的启动是http工具封装后的等价于以下方式:

	rpc.RegisterName("HelloService", new(HelloService))rpc.HandleHTTP() //客户端使用rpc.DialHTTPlistener, err := net.Listen("tcp", "127.0.0.1:8080")if err != nil {log.Fatal("ListenTCP error:", err)}fmt.Println("服务已启动")http.Serve(listener, nil)

他们的底层都是net网络包的功能。

注意的是当服务端使用rpc.HandleHTTP()方式处理时客户但必须使用rpc.DialHTTP方式拨号,用rpc.Dial无法远程访问,

Server有多种Socket监听的方式:

`Accept`用来处理一个监听器,一直在监听客户端的连接,客户端断开服务端停止,如下使zh

Server有多种Socket监听的方式:func (server *Server) Accept(lis net.Listener)func (server *Server) HandleHTTP(rpcPath, debugPath string)func (server *Server) ServeCodec(codec ServerCodec)func (server *Server) ServeConn(conn io.ReadWriteCloser)func (server *Server) ServeHTTP(w http.ResponseWriter, req *http.Request)func (server *Server) ServeRequest(codec ServerCodec) error
fmt.Println("等待客户端连接")
conn, err := listener.Accept()
if err != nil {log.Fatal("Accept error:", err)
}
fmt.Println("服务已经启动")
rpc.ServeConn(conn)

 问题拨号的方式rpc.Dial("tcp","ip")

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com