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

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





c ++;

//Кожен 40-й блок ми відкидаємо, оскільки відтворення

//відбувається повільніше ніж запис. Число визначено експерементально.

if (m_c% 40 == 0)

{;

}

m_sendBuffer. Add (buffer, count);

(m_sendBuffer. IsReady ())

{_ sendBufferEvent. Set ();

}

}


# endregion

}


Клас сервера

//Клас представляє функціональність сервера

public class Server: IServer, IClientHandlerCallbacks

{

//Об'єкт, що очікує підключень клінтовTcpListener m_listener=null;

//Потік прослуховування клінтовThread m_listenThread=null;

//Список підключених пользователейList lt; User gt; m_users=new List lt; User gt; ();


//Генератор випадкових чисел для ідентифікатора користувача

private Random m_random=new Random (0);


//Список авторизованих клієнтів, що не встановили ще всі необхідні

//з'єднання і чекають їх встановлення.

private List lt; IClientHandler gt; m_waiting=new List lt; IClientHandler gt; ();

//Список клієнтів готових до работеList lt; IClientHandler gt; m_ready=new List lt; IClientHandler gt; ();


//Об'єкт для синхронізації на попередніх двох списках

private object m_handlersMutex=new object ();


//Потік вихідних даннихThread m_playbackThread=null;


//Клас підписаних на події сервераIServerCallbacks m_callbacks=null;


//Стани сервераState

{,

}

m_state=State. None;


//Закриваємо всі соедіненіяvoid CloseAllConnections ()

{_ state=State. None;

(m_listener!=null)

{

{_ listener. Stop ();

} (SocketException ex)

{

Manager. Log («Сервер: Чи не вдалося зупинити прослуховування. Причина:» + ex. Message);

}

_ listener=null;

}

(m_ready)

{(IClientHandler handler in m_ready)

{. Stop ();

}

}

(m_callbacks!=null)

{_ callbacks. OnStop ();

}

}


//Потік мікшування даних

private void Playback ()

{(m_state == State. Listening)

{(m_ready)

{length=m_ready. Count;

idx=m_ready. Count;


//Отримуємо масив, що містить аудідоданний кожного клієнта

AudioData [] data=new AudioData [idx]; merge=null; (int i=0; i lt; idx; i ++)

{[i]=m_ready [i] .GetNext ();

}


//Виробляємо мікшування аудіоданих

for (int i=idx - 1; i gt;=0; i -)

{(data [i] == null)

{;

}

(merge == null)

{= new AudioData (data [i] .Count, data [i] .Data) ;;

}

. Merge (data [i]);

}

//Відправляємо змікшованого дані назад клієнтам

for (int i=0; i lt; idx; i ++)

{_ ready [i] .Add (merge);

}

}. Sleep (190);

}

}


//Потік прослуховування підключень клієнтів

private void ListenForClients ()

{

{_ listener. Start ();

} (SocketException ex)

{. Log («Server: Failed to start listening. Reason:» + ex. Message); () ;;

}


Manager. Log («Сервер: Початок прослуховування» + m_listener. LocalEndpoint. ToString ());

(m_state == State. Listening)

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





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

  • Реферат на тему: Аналіз даних за допомогою технології Data Mining
  • Реферат на тему: Data mining
  • Реферат на тему: Опробування знімків Landsat Climate Data Record
  • Реферат на тему: Creating a Data Mart for an Online E-Book Store
  • Реферат на тему: Технології аналізу даних (Text Mining, Data Mining)