You can create one RpcServer to one RpcClient.
Then the every RpcServer has the client conn field,
you can log the conn.RemoteAddr.
type Heartbeat struct {
conn net.Conn
}
func NewHeartbeat(conn net.Conn) *Heartbeat {
return &Heartbeat{ conn }
}
func (p *Heartbeat) Foo() {
log.Print(p.conn.RemoteAddr())
}
func acceptClient(lis net.Listener) {
heartbeat := new(Heartbeat)
for {
conn, err := lis.Accept()
if err != nil {
break
}
srv := rpc.NewServer()
if err := src.Register(NewHeartbeat(conn)); err != nil {
log.Fatal(err)
}
go srv.ServeCodec(jsonrpc.NewServerCodec(conn))
}
}