我遇到同样的问题,但是我按照一些人的经验编程不能成功通信。下面是999roseto347朋友所做的测试,听说他可以成功通信。
交流一下吧,或者我可以帮你做一下测试。QQ:13172724
Client A 的登录:
Client A 向Server S登记自己的公网IP及端口
Server S 向Client A 发送Client A 所有已上线的好友的公网IP及端口
Server S 向Client A 已上线的好友发送Client A 的公网IP及端口
Client B 的登录:
Client B 向Server S登记自己的公网IP及端口
Server S 向Client B 发送Client B 所有已上线的好友的公网IP及端口
Server S 向需与Client B 已上线的好友发送Client B 的公网IP及端口
现在Client A和Client B都已经知道对方的公网IP和端口了
现假设Client A发起与Client B通讯
Client A要求Server S向Client B发出Client A需要跟它(Client B)通讯的通知
(第一次连接测试:连接失败)
Client A向Client B发出连接包 导致NAT A记录了Client B信息
Client B向Client A发出连接包 导致NAT B记录了Client A信息
(第二次连接测试:)
Client A向Client B发出连接包此时NAT B已经记录了Client A信息,连接成功
Client B向Client A发出连接包此时NAT A已经记录了Client B信息,连接成功