我已经阅读了有关RPC编程的微软文档 ,但是仍然不知道如何从RPC服务器获取连接客户端的IP地址。
我确信有一个简单的方法来从服务器获取客户端IP地址连接时,但不知道如何做到这一点:/
感谢您的帮助,指向文档的简单指针将非常棒。
没有 – 没有文件记录的方法来实现这一点。 根据设计,Windows RPC从其客户端抽象网络传输(以及相关的元数据,如网络地址)。
如果你真的需要这样的东西,你可以把它烧到你的接口中(例如,实现一个Connect()方法,你的客户端提供它的IP地址,你可以存储在一个Context Handle中 )。 这当然假设你可以信任你的客户提供有效的IP地址…
应该可以使用RpcBindingserverFromClient。 引用RpcBindingserverFromClient的文档:
要查询客户端地址,应用程序首先调用RpcBindingserverFromClient函数来获取部分绑定的服务器绑定句柄。 服务器绑定句柄可以通过调用RpcBindingToStringBinding来获得字符串绑定。 服务器然后可以调用RpcStringBindingParse从字符串绑定中提取客户端的网络地址。
更新16/05/2017:还有未记录的函数I_RpcserverInqRemoteConnAddress(),最有可能返回客户端IP地址。 但我还没有尝试。