kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

.NETリモーティング(IPC版)クライアント

(続きです)

クライアント側の実装です。サーバ側の設定に合わせて、チャネルを"ipc://myserver/mymessage"としています。

    public partial class ClientForm : Form
    {
        private MyMessage myMessage;

        public ClientForm()
        {
            InitializeComponent();
        }

        private void ClientForm_Load(object sender, EventArgs e)
        {
            // クライアントチャネル作成
            // System.Runtime.Remotingを参照設定に追加しておくこと
            IpcClientChannel clientChannel = new IpcClientChannel();
            ChannelServices.RegisterChannel(clientChannel, true);

            // オブジェクト取得
            // URIはサーバ側に従って設定
            myMessage = (MyMessage)Activator.GetObject(
                typeof(MyMessage), "ipc://myserver/mymessage");
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            string text = string.Empty;

            try
            {
                // リクエスト設定
                MyRequest request = new MyRequest();
                request.data = tbRequest.Text;

                // 通信実施
                MyResponse response = myMessage.Call(request);
                text = response.data + "\r\n";
            }
            catch (Exception ex)
            {
                text = ex.Message + "\r\n";
            }

            // 画面表示
            tbResponse.Text += text;
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            tbResponse.Text = string.Empty;
        }
    }