Esempio n. 1
0
        /// <summary>
        /// 非同期送信コールバック
        /// </summary>
        /// <param name="ar"></param>
        private void SendCallBack(IAsyncResult ar)
        {
            // オブジェクト変換
            TelnetClientSendStream stream = (TelnetClientSendStream)ar.AsyncState;

            // 送信完了
            int bytesSent = stream.Socket.EndSend(ar);

            // ロギング
            this.Logger.InfoFormat("送信データ - {0:#,0} byte:\n{1}", stream.Stream.Length, Common.Diagnostics.Debug.Dump(1, stream.Stream));

            // 送信通知
            this.OnSendNotify.Set();

            // イベント呼出
            if (this.OnSend != null)
            {
                // イベントパラメータ生成
                TelnetClientSendEventArgs eventArgs = new TelnetClientSendEventArgs()
                {
                    Socket = stream.Socket,
                    Size   = bytesSent,
                    Stream = stream.Stream,
                };

                // イベント呼出し
                this.OnSend(this, eventArgs);
            }

            // 送信通知リセット
            this.OnSendNotify.Reset();
        }
Esempio n. 2
0
        /// <summary>
        /// 非同期送信のコールバックメソッド
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SendEvent(object sender, TelnetClientSendEventArgs e)
        {
            // 送信通知
            if (this.OnWrite != null)
            {
                // パラメータ生成
                NetworkVirtualTerminalWriteEventArgs args = new NetworkVirtualTerminalWriteEventArgs();
                args.StringBuilder.Append(this.LocalEncoding.GetString(e.Stream.ToArray()));

                // イベント呼出し
                this.OnWrite(this, args);
            }
        }