goRedisDLM/rpcSupport/jsonrpc.go
2025-02-06 16:48:15 +08:00

40 lines
650 B
Go

package rpcSupport
import (
"log"
"net"
"net/rpc"
"net/rpc/jsonrpc"
)
func RpcServer(host string, service interface{}) error {
err := rpc.Register(service)
if err != nil {
log.Println("rpc register error")
return err
}
listen, err := net.Listen("tcp", host)
if err != nil {
return err
}
log.Printf("rpc server listen ok: %s", host)
for {
accept, err := listen.Accept()
if err != nil {
log.Println("accept err: ", err)
}
jsonrpc.ServeConn(accept)
}
}
func RpcClient(host string) (*rpc.Client, error) {
dial, err := net.Dial("tcp", host)
if err != nil {
return nil, err
}
return jsonrpc.NewClient(dial), nil
}