远程处理 - 有关客户的信息。 C#

时间:2009-06-04 11:42:36

标签: c# remoting

在.net 2.0上使用远程处理时,是否可以找到/获取有关连接客户端的一些信息?我想知道在服务器端获取有关连接客户端的一些信息,所以我可以采取相应的行动吗?这是一个小型且非常本地的应用程序,永远不会有超过10个同时连接/请求客户端。

在每个函数中传递客户端引用? (或一些标识符)?我可以这样做,但我更愿意从请求/连接客户端获取信息。 IP地址或类似地址会很好。

此致

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

question可能有您正在寻找的答案。

我剥离了可能与您无关的部分,并留下实际抓取IPAddress的部分。

public ServerProcessing ProcessMessage(IServerChannelSinkStack sinkStack, 
    IMessage requestmessage, ITransportHeaders requestHeaders, 
    System.IO.Stream requestStream, out IMessage responseMessage, 
    out ITransportHeaders responseHeaders, out System.IO.Stream responseStream)
{
    // Get the IP address and add it to the call context.
    IPAddress ipAddr = (IPAddress)requestHeaders[CommonTransportKeys.IPAddress];
}

答案 2 :(得分:0)

This question显示了URI的明显格式,即当您将远程对象传递给URIObjRefRemotingServices.GetObjRefForProxy属性。前两个斜杠之间的字符串是每个进程的GUID,它从本地程序的角度唯一标识客户端。

在我的情况下,我只需要一些方法来识别客户端,而不是它的IP地址(无论如何都不适用于非TCP通道),所以这对我有用。