非局域网环境的点对点连接实现起来比较困难,主要是现在NAT太多了。
如果A、B一方有公网IP的话,通过服务器获取对方IP后可以建立点对点连接;
如果A、B都在NAT内的话,TCP就没办法了,必须通过服务器中转;UDP可以实现部分情况下的点对点,但是无法覆盖所有情况。
如果考虑到防火墙的话,就更不现实了,事实上的确有很多网络(比如教育网),尽管是公网IP,但是却不能建立server,需要防火墙开端口。
p.s. 这也就是有公网IP的电驴客户端可以获得high id的原因了:此类用户可以和任何eMule兼容客户端连接与下载。