本人菜鸟,不懂地址转发,NAT什么的。
但从逻辑上来讲,我们寄快递,打电话,包括这里的socket来发送消息,我觉得一定都要有个明确的、唯一的对方“地址”,不然神仙也不知道你的目的是谁。问题就在于内网ABC电脑的公网IP是一样的(理论上他们的公网IP以及内网IP可以组合成唯一的地址。公网IP像小区地址,各单元楼层门牌号就是内网IP,小区地址+门牌号组成了各户唯一的地址)
F:服务器(IP222.78.216.19:8080) ABC:同一局域网三台电脑
A 和 B 登录,连接F服务器,我猜测F服务器能从这连接中得到A和B的各自的唯一地址吧?(这地址可能是IP,端口以及其他什么的组合,总之能够分别标志A和B,使他们区分开来)
我的问题就是:
1、A和B主动连接F,Asocket.connect(F_IP,F端口)。F怎么得到AB分别的地址(用来问题2中回复他们)
2、F现在要回复A和B,那么F的代码如何填写括号里的参数Fsocket.connect(A_IP,端口),Fsocket.connect(B_IP,端口)
感激不尽!
------解决思路----------------------
连接上后
你中断下
看看服务端监听到的socket的属性就知道了
------解决思路----------------------
你需要恶补计算机网络基础
TCP/IP连接需要3次握手的,不仅仅是根据对方IP来建立连接,端口号也是不同的
对于服务端来说,它接收到的是从同一个IP,3个不同的端口发来的连接申请,接收到消息后,就会通过已经建立的连接,原封不动的将消息原路返回给路由器
路由器里有路由表,它知道每个包各自是给局域网里哪台机器的