SystemSocket support - alternative approach

Alternative pull request including refactor to DiscoveryClient so that it uses a factory method.