我使用grpc-java并通过ServerInterceptor获取元数据,但是我得到以下信息而没有客户端IP地址,权限是服务器ip,我怎样才能获得客户端ip?谢谢。
元数据({:scheme = [http],:method = [POST],:path = [/ test / test1], :authority = [192.168.199.9:50051],grpc-encoding = [identity], grpc-accept-encoding = [identity,deflate,gzip],te = [trailers], content-type = [application / grpc],user-agent = [grpc-objc / 0.13.0 grpc-c / 0.13.0(ios)]})
答案 0 :(得分:4)
元数据中未提供客户端IP。但您可以致电ServerCall.attributes()并获取Grpc.TRANSPORT_ATTR_REMOTE_ADDR。
请注意,API不稳定,可能会发生变化。
答案 1 :(得分:2)
在最新的(1.2.0)gRPC中使用拦截器中的io.grpc.Grpc.TRANSPORT_ATTR_REMOTE_ADDR
属性来获取远程地址。
答案 2 :(得分:1)
如果在python grpc中,您将使用grant
获取客户端ip地址和端口。
context.peer()
答案 3 :(得分:0)
客户端IP作为gRPC属性公开(TRANSPORT_ATTR_REMOTE_ADDR),访问它的示例是here
String inetSocketString = serverCallCapture.get().getAttributes()
.get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR).toString();