It looks like Valve has open-sourced their peer to peer networking code, and it is capable of running without Steam. I think it accepts an IP address and port number to connect to:
https://github.com/ValveSoftware/GameNetworkingSockets
Can you recommend a library for managing a public game server list? I could write a basic one myself but if there is a more robust lib out there that handles this I would prefer to use it.