我正在编写一个分布式Java应用程序,但网络方面的事情让我很难过。由于某种原因,它无法正常工作。我认为这是因为我通过ipconfig / all获得的IP地址无法从局域网外部访问。我感谢任何提示或建议。
答案 0 :(得分:3)
您需要通常所说的"NAT Traversal"或ICE。今天互联网上使用了两种主要协议TCP和UDP。 TCP套接字在其中携带大量的会话状态信息;因此,用于P2P的协议比UDP要困难得多。
以下列表是您可以用来实现基于UDP NAT遍历的P2P服务的更一般STUN Protocol (RFC 5389)的简化大纲......
建立UDP连接后,可以使用OpenVPN等方式在两个客户端之间形成UDP SSL VPN;这将为您提供一个简单的通道来启动客户端之间的TCP连接。但是,在此连接模型中需要考虑非平凡的安全性和信任问题;它不太可能在互联网上的随机用户之间有用。
如果需要TCP连接,我建议查看此互联网草案,MMUSIC-ICE-TCP:TCP Candidates with Interactive Connectivity Establishment (ICE)
答案 1 :(得分:2)
某些IP地址不可路由:http://en.wikipedia.org/wiki/IP_address - 如果你有其中一个,你将无法直接从局域网外部访问它。您可以从该局域网上的其他地址访问您的局域网上的其他地址。
如果您在局域网之外,则无法启动到局域网上特定计算机的TCP连接,但该计算机可以随身携带:http://en.wikipedia.org/wiki/Network_address_translator