After writing many failed backup applications over the years, I eventually decided that, whatever system I decided to write, I should write as little of it as possible. That is to say, I should use other peoples libraries to create it.
Consider the Server Message Block protocol. Originally adopted by Microsoft in the nineties, it is the backbone of pretty much all the small networks in the world today. Have you ever typed \\server\share\ before? Yes? Well so have I. Believe it or not, this is all that smBackup really does, it just types server names and share names in, in this format, and waits to see if it can write to the share.
The names of shares, it gets using the NetShareEnum() function available in Windows. The names of servers, however, is more interesting: smBackup will actually “ping” every combination of numbers such that your own computer’s IP address matching them for at least the first three number-groups. E.g. 10.0.0.1-254 where you computer’s IP address might e 10.0.0.73 Clever huh? Eventually, over the space of ten minutes or so, smBackup will find a match.