我已阅读loads of Microsoft documentation regarding RPC programming但仍未弄清楚我们如何从RPC服务器获取连接客户端的IP地址。
我确信在连接时有一种从服务器获取客户端IP地址的简单方法,但不知道如何执行此操作:/
感谢您的帮助,指向文档的简单指针会非常棒。
答案 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地址。但我还没有尝试过。