удаленное взаимодействие - информация о клиенте. C # - PullRequest
4 голосов
/ 04 июня 2009

Можно ли узнать / получить некоторую информацию о подключающемся клиенте при использовании удаленного взаимодействия в .net 2.0? Мне нравится знать, получить некоторую информацию о подключающемся клиенте на стороне сервера, чтобы я мог действовать соответственно? Это небольшое и очень локальное приложение, которое никогда не будет иметь более 10 одновременных подключений / запросов клиентов.

передать ссылку на клиента в каждую функцию? (или какой-то идентификатор)? Я мог бы сделать это таким образом, но я бы предпочел просто получить информацию от клиента запроса / подключения. IP-адрес или подобное было бы неплохо.

Привет

Ответы [ 3 ]

3 голосов
/ 04 июня 2009
1 голос
/ 04 июня 2009

Этот вопрос может иметь ответ, который вы ищете.

Я удалил части, которые, вероятно, не имеют значения для вас, и оставил часть, которая фактически захватывает IP-адрес.

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];
}
0 голосов
/ 23 июня 2015

Этот вопрос показывает кажущийся формат URI, то есть URI свойства ObjRef , которое вы получаете из RemotingServices.GetObjRefForProxy когда вы передаете ему удаленный объект. Строка между первыми двумя косыми чертами представляет собой GUID для каждого процесса, который однозначно идентифицирует клиента с точки зрения локальной программы.

В моем случае мне просто был нужен какой-то способ идентификации клиента, а не его IP-адрес (который в любом случае не был бы действителен для не-TCP-канала), так что это сработало для меня.

...