下面代码,是做个假设:我在NAT后边,本地先开本地3333端口。
连接服务器123.123.123.123的1111端口,NAT到的端口号是4444,假设服务器给我返回对方客户端ip 234.234.234.234和端口3333。
我再去连接对方。
到这里,按理说我本地已经向234.234.234.234:3333打洞。
可我在123.123.123.123和234.234.234.234监控时发现,我给234.234.234.234发出去的UDP,用的却是5555端口。也就是说,我这里给2个不同IP发UDP包,用的是不同的端口。这样234.234.234.234根本不知道我哪个端口对它是打开的。是我哪里弄错了?望高手指教。谢谢!private static UdpClient uc;
uc = new UdpClient(3333);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("123.123.123.123"), 1111);
byte[] bytes = Encoding.ASCII.GetBytes("conn");
uc.Send(bytes, bytes.Length, iep);IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("234.234.234.234"), 3333);
byte[] bytes2 = Encoding.ASCII.GetBytes("conn");
uc.Send(bytes2, bytes2.Length, iep2);
连接服务器123.123.123.123的1111端口,NAT到的端口号是4444,假设服务器给我返回对方客户端ip 234.234.234.234和端口3333。
我再去连接对方。
到这里,按理说我本地已经向234.234.234.234:3333打洞。
可我在123.123.123.123和234.234.234.234监控时发现,我给234.234.234.234发出去的UDP,用的却是5555端口。也就是说,我这里给2个不同IP发UDP包,用的是不同的端口。这样234.234.234.234根本不知道我哪个端口对它是打开的。是我哪里弄错了?望高手指教。谢谢!private static UdpClient uc;
uc = new UdpClient(3333);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("123.123.123.123"), 1111);
byte[] bytes = Encoding.ASCII.GetBytes("conn");
uc.Send(bytes, bytes.Length, iep);IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("234.234.234.234"), 3333);
byte[] bytes2 = Encoding.ASCII.GetBytes("conn");
uc.Send(bytes2, bytes2.Length, iep2);
难道我这里真的属于这种?测试了好3个地方,都这样问题,无解了?