【问题标题】:As simple as possible crossplatform Java UPNP hole punching library尽可能简单的跨平台 Java UPNP 打孔库
【发布时间】:2011-04-23 19:40:39
【问题描述】:

我需要一个带有简单 API 的库。定义简单:对我来说完美的解决方案类似于here 的描述,但在 Java 中添加了跨平台使用(对我来说,跨平台是 Win、Mac、Lin 的独立桌面应用程序).​​.....所以我希望看到的 API 看起来如何喜欢?就像我在 C# 中的一样:

using TCMPortMapper;

private void Form1_Load()
{
  PortMapper.SharedInstance.Start();
  PortMapping pm = new PortMapping(localPort, publicPort, 
         PortMappingTransportProtocol.TCP);
  PortMapper.SharedInstance.AddPortMapping(pm);
}
private void Form1_FormClosing()
{
  PortMapper.SharedInstance.StopBlocking();
}

我打算用它做什么?我想创建易于使用的 Google App Engine 免费计划分布式(类似云)文件服务器,该服务器通常基于我的应用程序用户计算机......所以说他们使用我的应用程序,他们托管它=)

【问题讨论】:

  • c# 标记,因为代码示例来自 C# 库和 C 标记,因为 C# 库是 C 库的包装器
  • “他们收容它”?你到底是什么意思?

标签: c# java c portforwarding upnp


【解决方案1】:

我建议你看看"Punching Holes with Java RMI,它可能会有所帮助。

【讨论】:

    【解决方案2】:

    我环顾四周,发现最有前途的库是miniupnp。有关如何执行此操作的官方规范称为UPnP IGD,阅读起来非常复杂且令人讨厌。

    应该可以从 Java 中执行此操作,您需要网络功能以及足够的权限来发送和接收UDP packets on special ports。我做了一个在我的局域网上工作的Python porting attempt,你可以移植它(它是 miniupnp 的简化)。如果你还没有花时间learn Python,我强烈推荐它。

    【讨论】:

    • 尝试用 cygwin 编译它,或者移植它以使用 Winsock(这很简单)。其余的应该没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2012-05-21
    • 2014-01-23
    • 1970-01-01
    • 2023-03-10
    • 2011-06-12
    相关资源
    最近更新 更多