2

複数の同時ユーザーがアプリを実行および実行し、それぞれが着信コールバック イベント メッセージを表示できる必要があるターミナル サーバーで実行されるアプリケーションで、.Net Remoting コールバック用の tcp ポートを開きたいと考えています。現在、ポートを開いてチャンネルをアプリに登録しようとすると、次を使用しています。

    private static void RegisterCallBackChannel(int callBackPort)
    {
        var clientProvider = new BinaryClientFormatterSinkProvider();
        var serverProvider = new BinaryServerFormatterSinkProvider 
                {TypeFilterLevel = TypeFilterLevel.Full};

        IDictionary props = new Hashtable();
        var chanNm = string.Format("CallBackChanPort:{0}", callBackPort);
        props["port"] = callBackPort;
        props["name"] = chanNm;
        props["typeFilterLevel"] = TypeFilterLevel.Full;

        if (ChannelServices.RegisteredChannels.Any(
            chn =>  chn is TcpChannel &&  chn.ChannelName == chanNm))
                return;
        var chan = new TcpChannel(props, clientProvider, serverProvider);
        ChannelServices.RegisterChannel(chan, true);
    }

これは最初のユーザーに対しては機能しますが、2 番目の同時ユーザーがユーザー セッションでアプリを起動すると、.Net コードに ChannelServices.RegisteredChannels は最初のユーザーが開いたチャネルは含まれませんが、もちろんコード行

var chan = new TcpChannel(props, clientProvider, serverProvider);   

異なるユーザー セッションであっても、同じマシンの同じポートで 2 つのチャネルを開くことができないため、失敗します。

どうすればいいですか?特定のポートがすでに開いているかどうかを検出できたとしても、あるユーザー セッションのアプリケーションは、別のユーザー セッションから作成されたチャネルで着信イベント メッセージを表示できますか??

4

0 に答える 0