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

            // 非同期読込が終了
            int bytesRead = stream.Socket.EndReceive(ar);

            // ロギング
            this.Logger.InfoFormat("受信(非同期)データ - {0:#,0} byte:\n{1}", bytesRead, Common.Diagnostics.Debug.Dump(1, stream.Buffer, bytesRead));

            // 受信通知
            this.OnReciveNotify.Set();

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

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

            // 受信通知リセット
            this.OnReciveNotify.Reset();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 非同期受信のコールバックメソッド
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ReciveEvent(object sender, TelnetClientReciveEventArgs e)
        {
            // 受信判定
            if (e.Size > 0)
            {
                // 受信データオブジェクト
                MemoryStream memoryStream = new MemoryStream();

                // ネゴシエーション
                this.Negotiation(e.Stream, memoryStream);

                // MemorySteramのサイズ判定
                if (memoryStream.Length > 0)
                {
                    // ロギング
                    this.Logger.Info(this.RemoteEncoding.GetString(memoryStream.ToArray()));

                    // 受信通知
                    if (this.OnRead != null)
                    {
                        // パラメータ生成
                        NetworkVirtualTerminalReadEventArgs args = new NetworkVirtualTerminalReadEventArgs();
                        args.StringBuilder.Append(this.RemoteEncoding.GetString(memoryStream.ToArray()));

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