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