40 lines
650 B
Go
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
|
|
}
|