I found the indy components to be pretty bad working with. Why not start all lowlevel? If you keep it in Berkeley sockets then you should easily be able to make it portable to all systems