Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > ip адрес на net Remoting


Автор: fluffy 19.4.2009, 14:49
Добрый день!
Пишу приложение(учебное) на основе dotNet remoting. Суть приложения проста: пользователи вводят что-то на клиентах (рассмотрим пример с решением уравнений), затем жмет кнопку "решить", все шлется на сервер(все классы MarshalByRefObject), там обрабатывается и шлется обратно. Все было хорошо, пока не появилось желание отражать на сервере(читай форме) действия клиента в виде:
" 192.168.*.* connected;
192.168.*.* solved smth;
192.168.*.* disconnected;"
как я понял, нигде так просто ip адрес не отловишь?
не подскажите? smile 

Автор: -Mikle- 19.4.2009, 23:00
Не знаю как на счет айпишника, но клиента можно идентифицировать другими способами. Есть такая штука как контексты...

Автор: fluffy 20.4.2009, 07:38
Цитата(-Mikle- @ 19.4.2009,  23:00)
Не знаю как на счет айпишника, но клиента можно идентифицировать другими способами. Есть такая штука как контексты...

Да, я читал про контексты, но не совсем разобрался.

Пытался передать ip таким образом:
Код

class RemoteHost //класс с функциями сервера
{
  ...
  public void Connect(String str)
  {
       CallContext.SetData("IP", str);
  }
  ...
}

на клиенте делал 
Код

rm = (RemoteHost)Activator.GetObject(typeof(RemoteHost), "tcp://" + textBox1.Text + "/RemoteHost/rh");
rm.Connect(this.IP);

далее на сервере пытался получить вручную хотя бы 1 ip (те вешал кнопку и делал ей обработчик)
Код

CallContext.GetData("IP");


но вылетал эксепшн, указывающий, что происходит обращение к неинстанциированному объекту. к тому же мне надо как то отлавливать различные действия(такие как подключен, отключен, запрос пересчета).


Делал аналогично приведенному тут:
http://blogs.msdn.com/dotnetremoting/archive/2006/07/27/680667.aspx

Автор: -Mikle- 20.4.2009, 23:46
Я щас уже не помню, но там помоему немаловажную роль играл ContextBoundObject и ILogicalThreadAffinative...

Добавлено через 2 минуты и 23 секунды
Цитата(fluffy @  20.4.2009,  10:38 Найти цитируемый пост)
  public void Connect(String str)
  {
       CallContext.SetData("IP", str);
  }

Строку нельзя положить так просто, надо ложить объект наследник от пустого интерфейса ILogicalThreadAffinative.

Добавлено через 4 минуты и 42 секунды
Цитата(fluffy @  20.4.2009,  10:38 Найти цитируемый пост)
к тому же мне надо как то отлавливать различные действия(такие как подключен, отключен, запрос пересчета)

Ну с этим то, проблем нет? или есть? Это ведь вызовы соответствующих методов...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)