y">
Клас клієнта // Клас представляє функціональність клієнта
public class Client: IClient
{
m_acnpClient=null;// Управляюче соедіненіеm_acnpInput=null;// Вхідний потік аудіоданнихm_acnpOutput=null;// Вихідний потік аудіоданих
bool m_disconnect=true;// З'єднання разорваноbool m_transmit=false;// Передача даних дозволена
m_iwp=null;// Програвач аудіоданих
m_sendBuffer=new ACBuffer ();// Буфер відправки аудіоданих. Threading. AutoResetEvent m_sendBufferEvent=new AutoResetEvent (false);// Подія відправки даних
//Подія отримання даних. Threading. AutoResetEvent m_recieveBufferEvent=new AutoResetEvent (false);
//Подія відтворення аудіоданих. Threading. AutoResetEvent m_playbackEvent=new AutoResetEvent (false);
//Зворотній зв'язок для агрегує классаm_callbacks=null;
//Потоки управління, вхідних, вихідних даних і відтворення
Thread m_clientThread=null; m_outputThread=null; m_inputThread=null; m_plabackThread=null;
//деініціалізацію: закриваються з'єднання, знищуються потокіCloseAllConnections ()
{_ transmit=false; _disconnect=true;
(m_inputThread!=null)
{(m_inputThread); _ inputThread=null;
}
(m_outputThread!=null)
{(m_outputThread); _ outputThread=null;
}
(m_plabackThread!=null)
{(m_plabackThread); _ plabackThread=null;
}
(m_iwp!=null)
{_ iwp. Stop (); _ iwp=null;
}
(m_acnpClient!=null)
{_ acnpClient. Client. Close (); _ acnpClient=null;
}
(m_acnpInput!=null)
{_ input. Client. Close (); _ acnpInput=null;
}
(m_acnpOutput!=null)
{_ acnpOutput. Client. Close (); _ acnpOutput=null;
}
(m_callbacks!=null)
{_ callbacks. OnDisconnect ();
}
(m_clientThread!=null)
{(m_clientThread); _ clientThread=null;
}
}
AbortThread (Thread thread)
{
{. Abort ();
} (Exception ex)
{
}
}
//Початок роботи. Встановлення з'єднань з сервером.
//Config: параметри з'єднання (адреса, порт ...)
bool IClient. Start (Config config)
{_ transmit=false; _disconnect=false;
_ clientThread=new Thread (new ParameterizedThreadStart (ClientThread)); _ clientThread. Start (config);
true;
}
//Завершення роботи кліентаIClient. Stop ()
{(m_acnpClient!=null)
{();
} true;
}
//Керуючий потокvoid ClientThread (object objConfig)
{config=(Config) objConfig;
//Створення керуючого з'єднання
m_acnpClient=new ACNPClient ();
{_ acnpClient. Connect (config. Address, config. Port);
} (SocketException ex)
{() ;;
}
DataInteger loginData=m_acnpClient. Login (config. UserName, config. Password); (loginData == null)
{() ;;
}
//Створення з'єднання входять данних_acnpInput=new ACNPClient ();
try
{_ acnpInput. Connect (config. Address, config. Port);
} (SocketException ex)
{() ;;
}
//Створення з'єднання вихідних даних
m_acnpOutput=new ACNPClient ();
{_ acnpOutput. Connect (config. Address, config. Port);
} (SocketException ex)
{() ;;
}
m_recieveBufferEvent. ...