子网1中的PCa和子网2中的PCb 怎么建立网络连接,相互通信?

子网1中的PCa和子网2中的PCb 怎么建立网络连接,相互通信?而且真心不明白编程socket通信上是怎么解决这个问题的。

需要在公网上有一个服务器转发。否则内网的任意一方都没法主动连接对方

1、设置两个子网的路由器使PCa、PCb可以被直接访问,如端口影射、非军事区。。。
2、参用NAT穿透技术
3、实用UPNP协议
4、有一个能联系两个子网的服务器转发。