Литмир - Электронная Библиотека
Содержание  
A
A

     } catch{}; //Поглотить любую ошибку

     irDASender = null;

    }

    return; //Выход

   }

   //Проверить успешность выполнения

   if (bSuccess == true) {

    m_descriptionOfLastSendAttempt = "Success!";

    setStatus(SendStatus.Finished_Successfully);

    return;

   }

   //Проверить, не была ли операция отменена пользователем

   if (m_wasSenderStopped == true) {

    m_descriptionOfLastSendAttempt = "User Aborted.";

    setStatus(SendStatus.Finished_Aborted);

    return;

   }

   //B противном случае... Нам пока не удалось обнаружить сервер IrDA,

   //имя которого совпадает с именем службы. Мы продолжим выполнение

   //цикла и попытаемся найти сервер.

  }

  //Мы никогда не попадем в это место программы при выполнении

 }

 //Попытаться передать поток ввода-вывода (например, файл) посредством IR

 //[возвращаемое значение]:

 // true: успешная передача файла

 // false: файл не был успешно передан

 private bool sendStream(

  out string errorDescription, ref System.IO.Stream streamOutToIrDA,

  ref System.Net.Sockets.IrDAClient irDASender, ref System.IO.Stream streamInFromFile) {

  errorDescription = "";

  //----------------------------

  //Создание нового клиента IRDA

  //----------------------------

  try {

   //-------------------------------------------------------

   //Возврат произойдет довольно быстро. Клиент будет выбран

   //и возвращен, если прослушивающие клиенты отсутствуют.

   //-------------------------------------------------------

   irDASender = new System.Net.Sockets.IrDAClient(m_IrDAServiceName);

  } catch (System.Exception eCreateClient) {

   //B данном случае могло возникнуть несколько ситуаций:

   //#1: отсутствуют прослушивающие устройства

   //#2: прослушивающее устройство существует, но не реагирует

   // (может отказаться от разговора)

   errorDescription = eCreateClient.Message;

   return false;

  }

  //B данном случае могло возникнуть несколько ситуаций:

  //#1: Мы получили соединение от приемного устройства IR

  //#2: IR-запрос был отменен (кто-то вызвал функцию STOP).

  if (m_wasSenderStopped == true) {

   irDASender.Close();

   irDASender = null;

   return false;

  }

  //==========================================

  //ПЕРЕДАТЬ ДАННЫЕ!

  //==========================================

  //Открыть файл, который мы хотим передать

  streamInFromFile = System.IO.File.OpenRead(m_fileToSend);

  //Открыть сокет IrDA, которому мы хотим передать данные

  streamOutToIrDA = irDASender.GetStream();

  const int BUFFER_SIZE = 1024;

  byte[] inBuffer = new byte[BUFFER_SIZE];

  int bytesRead;

  int iTestAll = 0;

  int iTestWrite = 0;

  do {

   //Считать байты из файла

   bytesRead = streamInFromFile.Read(inBuffer, 0, BUFFER_SIZE);

   iTestAll = iTestAll + 1;

   //Записать байты в наш выходной поток

   if (bytesRead > 0) {

    streamOutToIrDA.Write(inBuffer, 0, bytesRead);

    iTestWrite = iTestWrite + 1;

   }

  } while (bytesRead > 0);

  //Сбросить выходной поток

  streamOutToIrDA.Flush(); //Закончить запись любых данных

  streamOutToIrDA.Close(); //Закрыть поток

  streamOutToIrDA = null;

  //Освободить локальный файл

  streamInFromFile.Close();

  streamOutToIrDA = null;

  //Освободить порт IrDA

  irDASender.Close();

  irDASender = null;

  //Успешное завершение!!!

  return true;

198
{"b":"947732","o":1}