Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача удаленному объекту удаленного объекта, не получаеццо 
V
    Опции темы
MaxWave
Дата 6.12.2008, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Вообщем есть простое приложение - типа сетевой игры. Один сервер- куча клиентов. Сервер должен знать всех клиентов и постоянно с ними иметь соединение. При создании приложения клиента он должен заргистрировать себя на сервере, мол я тоже буду играть. Сервер должен его занести в свой список и в случае чего, вызывать его методы. Т.е., есть один серверный объект, активируемый на сервере, и много клиентских объектов (по одному на каждого клиента), активируемых на клиенте. Вот ссылки на эти клиентские объекты и должен хранить серверный объект.

Код

class GameManager: MarshalByRefObject
    {
        public void RegisterPlayer(Player pl) 
        {
            .. //заносим в массив игрока (этот метод будет вызываться на клиенте, а выполняться на сервере)

        }

        public void MoveAllPlayers() 
        {
              ..
             //перебираем массив и вызываем метод Move всех Player's
        }
    }


Код

 class Player : MarshalByRefObject
    {
        public PlayerInfo PlayerInfo;

        public Player(string name)
        {
            PlayerInfo.Name = Name;
            PlayerInfo.Top = 100;
            PlayerInfo.Left = 100;
            PlayerInfo.Height = 100;
            PlayerInfo.Width = 100;
            PlayerInfo.BackColor = Color.Red;

            //((GameApp)gameApp).InvokeMember(dlg);
        }
        string _Name;
        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
         public void Move(Point coords)
         {
               //этот метод может вызваться с сервера (но выполняться на клиенте) и перемещать игрока
         }
}


Но во время вызова функции вылетает ошибка:
Because of security restrictions, the type System.Runtime.Remoting.ObjRef cannot be accessed.
           
Код

GameManager gm = (GameManager)Activator.GetObject(typeof(GameManager), "tcp://10.5.2.45:7777/RemoteTimeHost/rt");
            RemotingConfiguration.RegisterActivatedClientType(typeof(Player), "tcp://10.5.2.45:7777");
            Player pl = new Player("sfs");
            gm.RegisterPlayer(pl);..вот тут вылетает експешн

Я так понимаю, что косяк в том, что я передаю в кач-ве параметра объект, наследованный от MarshalByRefObject. Ну а как тогда быть? Сереализовать его мне не имеет смысла, он должен управлять клиентом.


Это сообщение отредактировал(а) MaxWave - 6.12.2008, 01:24
PM MAIL   Вверх
MaxWave
Дата 16.12.2008, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Короче делаем так, как написано тут, и радуемся жизни. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.