/// <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(); }
/// <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); } } } }