This is more of a development test project so the end result does not have to be an entirely pretty polished interface, but a working example. (very low bandwidth use is important, only for voice on VOIP not music, so keep it as low as possible using lowest codecs)
The goal is to create a P2P VOIP appliction in visual basic, that will also allow IM and file transfers (small pictures). The system should have an address book, and open channels which are essentially like radio channels. as well as the VOIP ability to call an individual.
So the system would work as follows, when started there would be a default 'Channel' which is like a big confrence room that each peice of software is set to. So that when you communicate through VOIP on that 'Radio Channel' like a CB radio everyone can hear that. There should be the ability to create an unlimited amount of 'Channels' with any name required. so for example an event could be given a new channel and it could either be an open channel that anyone can join. or a passworded channel.
When someone joins that channel, any IM message / Broadcast message which is not specific to one person gets sent to everyone on that channel through P2P, as with file transfers. The system should be encrypted.
In addition there should also be the ability to have an address book, so if users were not on a channel, or they wanted to talk to a specific person they could use that VOIP call that would be direct to that person, not in the confrence call.
Another feature would be the ability to 'listen' into multiple 'Confrence' calls. So in essence there would be multiple radio channels much like a CB and the software can be told to monitor one channel, which might light up on the screen when talking comes up on that one, and have the radio set to monitor and talk on another channel.
One other feature is there would be two versions of the software, one mobile and another a server like desktop version. So the mobile software can all commuincate to eachother even if the server is not there, but the mobile can also communicate with the desktop software which would have more messaging abilities, and more administrative abilities in setting up mobile nodes and the likes.
Another important feature is the ability to updates to the software to be distributed automatically from the desktop version.
In terms of software, the mobile versions would all be on a big LAN, and desktop versions most likely on WAN so some ability to communicate would be important between the two, even if the mobile versions send a register command to the WAN desktop servers to get lists of who is on, radio channels, information and then update that information so that if connection is lost they can still function.
Any questions please use Public Message Board and i can clarify and give diagrams and pictures and the likes.
Keepiong budget to a minimum is important as well as its a trial idea build not a finished project, and i would need copies of all source code and visual basic project files so i could modify that if needed.
You can use existing open source VB solutions if they help achieve the end goal, but basically i want the end application to be all in one, not an application that interfaces to an existing softphone or something, it needs to be in the app.
Any suggestions let me know,
One other important feature would be to allow for at least in desktop software logins with different permissions (eg use, settings, supervisor, guest) and that all the desktop consoles have an ability to link up automatically with each other and the mobile software somehow.
In addition a transactions database should be maintained within the software so that logs of messages / files being sent are kept as well as calls being made etc so stats can be provided and logs are kept in a database of some sort.
System needs to be true VOIP P2P, so would be able to function without a server being present. But if a server (being any desktop software) was present, it would detect it and get all channels, settings, information and retain that in case the server disappeared.
Cant rely on the server though, each software node needs to be able to broadcast to discover both LAN and WAN nodes and list those and their status and information in like a buddy (or present nodes) list, not have to enter IP addresses. Kind of like DHT i think.
Could use one of the open source P2P SIP projects possibly provided they can be used in Windows or converted to windows and provide the functionality i need (including NAT traversal)
Listed below are some P2P SIP projects that might be worth having a peek at to use as part of the project.
P2P SIP using DHT2
Open P2P IM / VOIP system
Either way it needs to be meeting the requirements of above, and i guess idiot proof in that it cant require servers, or users to enter IP addresses, should just work.
Whilst it cant require servers, it can download information from desktop systems to get more information about other nodes, both in internal and external networks, but it should keep copies of those tables so if the desktop nodes are not present, it has the ability to find nodes in the private network, or on the WAN.
I guess it is really client-less, all nodes become super-nodes in the DHT sense.