关于套接字编程一只有个疑问?解决思路

关于套接字编程一只有个疑问?
刚学网络编程,就是用tcp连接的时候要绑定ip地址,如果实在一个局域网内,就填那个内网ip,但是如果不在一个局域网内,两个不同城市的应该填那个ip呢???如果填外网(公网)ip的话,那边也是一个局域网,很多主机的外网ip都是一样的,那要怎么才能找到是那一台主机呢??
求高手给解答啊??

------解决方案--------------------
网络地址转换(NAT)简介
------解决方案--------------------
探讨
刚学网络编程,就是用tcp连接的时候要绑定ip地址,如果实在一个局域网内,就填那个内网ip,但是如果不在一个局域网内,两个不同城市的应该填那个ip呢???如果填外网(公网)ip的话,那边也是一个局域网,很多主机的外网ip都是一样的,那要怎么才能找到是那一台主机呢??
求高手给解答啊??

------解决方案--------------------
简单点说:如果你处于内网A 你的IP地址是192.168.2.210 对方处于内网B 他的IP地址也可以是192.168.2.210,假设你们都可以通过设备(网关,路由,代理服务器等)来访问公网,这样你们就是可以互相通信的,但要借助第三方才可能办到,因为你们没有办法在网络上唯一标示自己的计算机,因为每个内网可能有1个或多个IP,但在内网中却可以有很多台计算机使用同一个公网地址,所以如果listen方只有一个内网地址,那他就只能接受来自相同内网connect。
解决你的问题的方法:
1.在路由上映射你要监听的端口
2.在一台拥有公网地址的服务器上监听用户A和用户B一起连接公网服务器就可以实现AB间通信
3.总之,不论你怎么想办法,要想实现广域网的通信,你必须要让通信方A或B或第三者,至少有一方有公网地址才可以进行
------解决方案--------------------
用穿透nat的方法也可以。