RPC窗口获取客户端IP地址

时间:2015-05-15 10:43:07

标签: c windows rpc

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

我确信在连接时有一种从服务器获取客户端IP地址的简单方法,但不知道如何执行此操作:/

感谢您的帮助,指向文档的简单指针会非常棒。

2 个答案:

答案 0 :(得分:4)

不 - 没有记录的方法来实现这一目标。 Windows RPC by design从其客户端抽象出网络传输(以及网络地址等相关元数据)。

如果你确实需要这样的东西,你可以把它烘焙到你的界面(例如实现一个Connect()方法,你的客户端提供它可以藏匿在Context Handle中的IP地址)。当然,这假定您可以信任您的客户提供有效的IP地址......

答案 1 :(得分:3)

应该可以使用RpcBindingServerFromClient。引用RpcBindingServerFromClient的文档:

  

要查询客户端的地址,应用程序首先调用RpcBindingServerFromClient函数以获取部分绑定的服务器绑定句柄。服务器绑定句柄可用于通过调用RpcBindingToStringBinding来获取字符串绑定。然后,服务器可以调用RpcStringBindingParse从字符串绑定中提取客户端的网络地址。

UPDATE 16/05/2017:还有未记录的函数I_RpcServerInqRemoteConnAddress(),它最有可能返回客户端IP地址。但我还没有尝试过。