Fort Forwarding on routers required by Socket connections?

So I just wanted to know if there was a way to “ignore” routers on home networks, or commercial ones at that.

If I’m using a port that has no specification (43144) and trying to communicate with someone behind a router, I always have to ask them to port forward on their routers so that the computer can get ahold of it.

Is there a way to force Java connections to not require port forwarding on their LAN’s network? (ie: The type of connection being made perhaps? Currently using the Socket and ServerSocket class)

My code works, in that I’ve tested two computers on the same LAN, the SAME computer as well as a computer on a different network in another city. Everything worked great, but only after Port Forwarding was physically done by the user on their home router.)

it’s fundamentally impossible(unless dmz’ed in which case the stuff is send there instead of dropped.)
there’s upnp and others to automate the process for the lazy though.

another way you could do is to use a server and then both people who want to communicate just have to connect to that server.