Technologies:  C++, C#

This is one of the University projects. It is a music streaming application. The audio content is played using XAudio2 API. It contains a multithreading server and the client application.

The server:

– Does not have a user interface

– Is able to accept connections and process requests from multiple clients concurrently.

– The audio tracks exist only on the server side and are transferred to all connected clients through the socket in 32768 bytes chunks.

– Is able to handle multiple clients at the same time. Each new connection is handled in the new process.

The Client:

– Requests a list of audio tracks from the server and the user can select one of them to play.

– The client application provides a graphical user interface (GUI) which is written in C#

– The C++ code, which is responsible for communication with the server and plays the audio, is packed in dynamic link library (DLL) and the suitable API is exposed by DLL that can be called from any high level language.

– The user is able to play, pause, stop or switch the current audio track

Testing Details:

– Many clients were started and connected to the server. Each of them played different songs. Server was able to serve many clients without any problem even when the client application was closed while the server was still sending the data.

– After connecting with the server, the client could immediately load playlists from it. When server was closed I tried to play a song from the client. No information from the server was sent but clients program did not crash.

– Server ran for 12 hours with random time connected clients. After a couple of hours it was still able to serve multiple clients.

Because the server does not have any graphical interface the pictures presented here are only on the client side.