RPC windows获取客户端IP地址

RPC windows获取客户端IP地址,c,windows,rpc,C,Windows,Rpc,我已经读过,但仍然不知道如何从RPC服务器获取连接客户端的IP地址 我确信有一种简单的方法可以在连接时从服务器获取客户端IP地址,但不知道如何做到这一点:/ 感谢您的帮助,一个指向文档的简单指针就太好了。否-没有文档化的方法来实现这一点。Windows RPC by design从其客户端抽象出网络传输(以及相关元数据,如网络地址) 如果您真的需要这样的东西,您可以将其烘焙到您的接口中(例如,实现一个Connect()方法,在该方法中,您的客户机提供您可以存储在数据库中的IP地址)。当然,这假设

我已经读过,但仍然不知道如何从RPC服务器获取连接客户端的IP地址

我确信有一种简单的方法可以在连接时从服务器获取客户端IP地址,但不知道如何做到这一点:/


感谢您的帮助,一个指向文档的简单指针就太好了。

否-没有文档化的方法来实现这一点。Windows RPC by design从其客户端抽象出网络传输(以及相关元数据,如网络地址)


如果您真的需要这样的东西,您可以将其烘焙到您的接口中(例如,实现一个Connect()方法,在该方法中,您的客户机提供您可以存储在数据库中的IP地址)。当然,这假设您可以信任您的客户端提供有效的IP地址…

使用RpcBindingServerFromClient应该是可能的。引用以下文件:

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


2017年5月16日更新:还有一个未记录的函数I_RpcServerInqRemoteConnAddress(),它很可能返回客户端IP地址。但是我还没有尝试。

注意,您可以获得用于身份验证的用户帐户的信息。RPC服务器通常比客户端IP地址更感兴趣;我是RPC编程的新手@HarryJohnston,你有没有指向提供这一点更多信息的文档页面的指针?我有一种感觉,我已经爬遍了整个网络,却找不到任何有效的例子;微软的文档似乎已经过时了。非常感谢!我相信您可以从RpcImpersonateClient开始,然后是OpenThreadToken,然后是GetTokenInformation.MSDN声明可以使用RpcBindingServerFromClient()函数。请参阅my answer.MSDN声明可以使用RpcBindingServerFromClient()函数。看看我的答案。