I see this a lot for new programmers trying to solve problems they get handed down too them. They freeze up and can not figure out where to start on a project. What I find that helps me out is to break the problem down into smaller project. One of the most recent ones to-date is the networking TCP and UDP code for the server and client.
So here is how I solved this problem. First the object was to create a client / server connection. So I started by researching options that would allow us to use networking on MONO.NET. As this is part of our code base to use the portal version of .NET. So I found a few API options, 3 to be clear. Researching each of these and talking to the vendors etc lead me to one of them for our own reason for the project I selected an open source one.
To summarize to figure the big picture out of getting a server / client code working I broke the problem down into small area fix it and push it aside then turn to the next issue. Figuring out where these break points out for me normally becomes a question of relationship to the project. Such as the logic for the listener is separated from the logic from the port selector. But when you put them together you get a functioning method with them both to allow you to obtain the object.