Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Система проведення аудіоконференцій

Реферат Система проведення аудіоконференцій





Reset (); _ sendBufferEvent. Reset ();


//Запуск потоків з'єднань вхідних і вихідних даних

m_outputThread=new Thread (new ThreadStart (OutputThread)); _ outputThread. Start ();

_ inputThread=new Thread (new ThreadStart (InputThread)); _ inputThread. Start ();

_ transmit=true;


//керуючий цикл

//керуючий клієнт запитує дію у сервера і виконує його

bool localDisconnect=true; (! m_disconnect)

{request=new Command (Command. CommandType. ClientAction); _ acnpClient. SendCommand (request);

response=m_acnpClient. RecieveCommand (); (response == null)

{_ disconnect=true; () ;;

} (response. Value)

{Command. CommandType. None://Нічого не робити. Sleep (3000) ;; Command. CommandType. ServerLogout://Розірвати соедіненіе_transmit=false; _disconnect=true;=false; () ;;; Command. CommandType. ServerClearUserList://Очистити контакт-ліст_callbacks. OnContactListClear () ;; Command. CommandType. ServerUserOnline://Новий пользовательuserName=m_acnpClient. RecieveData lt; DataString gt; (); _ callbacks. OnContactListAddUser (userName. Value) ;;

}

}


//У випадку, якщо клієнт самостійно розірвав з'єднання

//необхідно послати повідомлення сервера (localDisconnect)

{request=new Command (Command. CommandType. ClientLogout); _ acnpClient. SendCommand (request);

}

}


//Потік вихідних даннихvoid OutputThread ()

{(! m_disconnect)

{(m_transmit)

{

//Чекаємо, поки дані не надійдуть у буфер

m_sendBufferEvent. WaitOne ();

audioData=m_sendBuffer. GetNext (); _ acnpOutput. SendAudioData (audioData);

}

}

}


//Потік входять даннихvoid InputThread ()

{ws=new AudioStream (new WaveFormat (8000, 1)); _ plabackThread=new Thread (new ParameterizedThreadStart (PlayBackThread)); _ plabackThread. Start (ws);

(! m_disconnect)

{(! m_transmit)

{;

}

data=m_acnpInput. RecieveAudioData (); (data == null)

{;

}

. Add (data);

(ws. IsReady ())

{ps=PlaybackState. Stopped;

//невідоме поведінку бібліотеки NAudio

//іноді при читанні властивості виникає виняток

try

{= m_iwp. PlaybackState;

} (Exception ex)

{str=ex. Message;

}

(ps!=PlaybackState. Playing)

{_ recieveBufferEvent. Set ();

}

}

}

}


//Потік воспроізведеніяvoid PlayBackThread (object wsObj)

{ws=(AudioStream) wsObj; _iwp=new DirectSoundOut ();

bs=new BlockAlignReductionStream (ws); _ iwp. Init (ws); _ iwp. PlaybackStopped +=new EventHandler (OnPlaybackStopped);

(! m_disconnect)

{_ recieveBufferEvent. WaitOne ();

(ws. IsReady ())

{(m_iwp. PlaybackState!=PlaybackState. Playing)

{_ iwp. Play ();

}

}

}

}


//Логування сообщеніяvoid Log (string message)

{. Log (message);

}


# region IAudioReciever Members


//Лічильник надходжень аудіо блоковint m_c=0;


//Установка класу передплатника на події клієнта

void IClient. SetCallbacks (IClientCallbacks callbacks)

{_ callbacks=callbacks;

}

//Отримання аудіоданих від бібліотеки NAudioIClient. AddAudioData (byte [] buffer, int count)

{(m_disconnect ||! m_transmit)

{;

}

_ ...


Назад | сторінка 7 з 10 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Технологія розгортання додатків Java Web Start
  • Реферат на тему: Аналіз даних за допомогою технології Data Mining
  • Реферат на тему: Архітектура Клієнт / сервер. Поняття виділеного сервера. Види серверів
  • Реферат на тему: Технології аналізу даних (Text Mining, Data Mining)
  • Реферат на тему: Data mining