【发布时间】:2009-06-04 11:42:35
【问题描述】:
在 .net 2.0 上使用远程处理时,是否可以找出/获取有关连接客户端的一些信息?我想知道在服务器端获取一些关于连接客户端的信息,所以我可以采取相应的行动吗?这是一个小型且非常本地化的应用程序,永远不会有超过最多 10 个同时连接/请求的客户端。
在每个函数中传递客户端引用? (或一些标识符)?我可以这样做,但我宁愿只从请求/连接客户端获取信息。 IP 地址或类似地址会很好。
问候
【问题讨论】:
在 .net 2.0 上使用远程处理时,是否可以找出/获取有关连接客户端的一些信息?我想知道在服务器端获取一些关于连接客户端的信息,所以我可以采取相应的行动吗?这是一个小型且非常本地化的应用程序,永远不会有超过最多 10 个同时连接/请求的客户端。
在每个函数中传递客户端引用? (或一些标识符)?我可以这样做,但我宁愿只从请求/连接客户端获取信息。 IP 地址或类似地址会很好。
问候
【问题讨论】:
这个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];
}
【讨论】:
This question 显示 URI 的明显格式,即当您将远程对象传递给 ObjRef 时,您从 RemotingServices.GetObjRefForProxy 获得的 URI 属性。前两个斜杠之间的字符串是每个进程的 GUID,它从本地程序的角度唯一标识客户端。
在我的例子中,我只需要某种方法来识别客户端,而不是它的 IP 地址(无论如何这对于非 TCP 通道都无效),所以这对我有用。
【讨论】: