RPC windows 获取客户端IP地址

RPC windows get client IP address

我已阅读 loads of Microsoft documentation regarding RPC programming 但仍然不明白我们如何从 RPC 服务器获取连接客户端的 IP 地址。

我确定有一种简单的方法可以在连接时从服务器获取客户端 IP 地址,但不知道该怎么做:/

感谢您的帮助,一个指向文档的简单指针会很棒。

否 - 没有记录在案的方法来完成此操作。 Windows RPC 在设计上从其客户端抽象出网络传输(以及相关的元数据,如网络地址)。

如果你真的需要这样的东西,你可以将它融入你的界面(例如,实现一个 Connect() 方法,你的客户端提供它的 IP 地址,你可以将其存储在 Context Handle 中)。当然,这假设您可以信任您的客户提供有效的 IP 地址...

使用 RpcBindingServerFromClient 应该是可以的。 RpcBindingServerFromClient:

的引用文档

To query a client's address, an application starts by calling the RpcBindingServerFromClient function to obtain a partially bound server binding handle. The server binding handle can be used to obtain a string binding by invoking RpcBindingToStringBinding. The server can then call RpcStringBindingParse to extract the client's network address from the string binding.

更新 16/05/2017: 还有一个未记录的函数 I_RpcServerInqRemoteConnAddress() 很可能是 return 客户端 IP 地址。不过我还没试呢