First of all, there is no workaround for port forwarding if your computer is behind a Router. The reason is simple, you have multiple machines that all share the very same global IP, the one assigned to your Router. If there is an incoming packet, the Router has no idea where to send it and thus drops it. So you have to tell the Router explicitly that you are waiting for data on Port X so it can forward the packets to your machine.
This also works automatically if you are sending a packet to someone, for example a web server. The Router sees that you are sending data on Port X to address Y and stores the request. If it later receives a packet from address Y, it will forward it to your machine.
As you see, port forwarding is part of the whole system and there is no workaround, but, one can setup automatic port forwarding. This is done by either using UPnP or NAT-PMP. NAT-PMP is a protocol specially designed to setup automatic port forwarding but not so common out there because its relatively new and users usually got a Router together with their DSL connection back in 2003.
UPnP is a way older protocol family which can also map ports (together with some other stuff) and the good news is: JulzMighty wrote a nice little dll that allows you to use UPnP easily in your program:
http://www.opserver.de/ubb7/ubbthreads.php?ubb=showflat&Number=360443#Post360443