Technical walkthrough of Conaito VoIP EVO conferencing
The Conaito VoIP EVO client is a network enabled application which requires a Conaito VoIP EVO server to connect to in order to interact with other users. The
Conaito VoIP EVO server's tasks are very simple in the sense that all it does is keep track of where users are located and forward the voice-data it receives from a user to other users in the same conference.
VoIP EVO Client/Server interaction
A Conaito VoIP EVO client connects to a server by first opening a TCP connection (typically to port 10300) and afterwards sends a UDP "hello" packet (typically to port 10301) to the server. The TCP connection is used for handling all "administrative" commands like joining and leaving channels whereas the UDP connection is only used for handling voice-data. All administrative commands sent on the TCP connection are human readable and it's fairly simple to interact with a
Conaito VoIP EVO server using e.g. Telnet in a Linux-shell or Windows command-prompt. The
Conaito VoIP EVO SDK contains a list of all the administrative commands which can be issued to the server.
Voice-data recorded by a Conaito VoIP EVO client is transmitted to users in the same conference
by sending the voice-data to the
Conaito VoIP EVO server which then forwards the voice-data to the other users. By having the server forward the voice-data takes the load of the clients so each client doesn't have to send its voice-data packet to every other user in the same conference. Since voice-data is simply forwarded by the
Conaito VoIP EVO server, a client can receive voice-data from multiple users at the same time. This increases the load on the client's download bandwidth but since a conference typically only have one speaker it's not a big issue and today's ADSL and cable internet users typically have higher download than upload speed. Given this information it's possible to calculate the bandwidth required for the server to host, say a 12 user conference.
If one user is talking and uses a 2 KBytes/sec voice quality the server must transmit (12 - 1) * 2 KBytes/sec = 22 KBytes/sec. If three users are talking it's 3 * 22 KBytes/sec = 66 KBytes/sec in bandwidth usage on the server. For each "non-talking" client participating in this conference where three people are talking they must have a downstream of at least 3 * 2 KBytes/sec = 6 KBytes/sec.
Integrating the Conaito VoIP EVO Mobile client
The Conaito VoIP EVO client - Mobile Edition is available as a Win32 DLL with a C-interface and
a Win32 COM control. All client implementations provide pretty much the same interface. .NET Compact Framework users will probably be most comfortable with the COM control whereas C++ developers are most likely to prefer the C-interface DLL. The DLL, however, requires thorough knowledge of HWND and Win32 message passing (PostMessage, SendMessage and GetMessage).
Both VoIP clients have been compiled for Pocket PC and Windows Mobile, which use intruction-set ARMv4 and ARMv4I, respectively. Note that it is not possible to connect to a
Conaito VoIP EVO server if the WindowsCE/ Windows Mobile device is running under Microsoft ActiveSync. This is because ActiveSync doesn't support UDP packet transmission. The same goes for the Emulator images which comes with the Pocket PC SDK and Windows Mobile SDK. The
Conaito VoIP EVO Mobile SDK has been tested with Embedded Visual C++ and Visual Studio. Using Visual Studio 2005 is highly recommended since it comes with an ARMv4-based Pocket PC emulator. Currently there's not a VoIP client available which will run with the emulator for Embedded Visual C++ (which uses a x86 instruction set). The API of the VoIP clients and are the same as for the clients in the VoIP EVO SDK, except that WindowsCE uses Unicode (WCHAR instead of CHAR). The Server-folder of this SDK contains the standard
Conaito VoIP EVO servers which runs on
Win32 and Linux.