Удаленные объекты и удаленные подключения

Я использую.NET Remoting для некоторых простых IPC на основе наблюдателей. У меня были две проблемы:

  1. Если я не выполняю никаких звонков от клиента на удаленном объекте в течение нескольких минут, возникает ошибка, когда я пытаюсь позвонить, указывая, что соединение было разорвано. Как я могу сохранить это в живых?
  2. Кажется, я не могу принимать клиентов с других компьютеров через TCP. Я использую TcpChannel, настроенный так:

    BinaryServerFormatterSinkProvider serverProv = new 
        BinaryServerFormatterSinkProvider();
    serverProv.TypeFilterLevel = TypeFilterLevel.Full;
    BinaryClientFormatterSinkProvider clientProv = new 
        BinaryClientFormatterSinkProvider();
    IDictionary props = new Hashtable();
    props["port"] = port;
    TcpChannel channel = new TcpChannel( props, clientProv, serverProv );
    
    ChannelServices.RegisterChannel( channel, false );
    
    RemotingConfiguration.RegisterWellKnownServiceType( typeof( Controller ),
        "Controller", WellKnownObjectMode.Singleton );
    

И когда клиентское приложение пытается подключиться ( m_Controller = (Controller)RemotingServices.Connect( typeof( Controller ), "tcp://" + ip + ":2594/Controller" ) )Это всегда тайм-аут. Я не защищен брандмауэром, и мои порты перенаправлены правильно. Я могу использовать этот порт для приложений на основе сокетов, но не для удаленного взаимодействия по некоторым причинам. Пожалуйста помоги!

1 ответ

  1. Вы инициализировали время жизни объекта Controller? См. http://www.diranieh.com/NETRemoting/InDepthRemoting.htm.
  2. Смотрите мой ответ здесь: Удаленное соединение через TCP.
Другие вопросы по тегам