【问题标题】:I need to create a new network for my application我需要为我的应用程序创建一个新网络
【发布时间】:2013-12-29 06:28:25
【问题描述】:

我的项目是创建一个类似于 Apple 的 AirDrop 的应用程序。为此,我需要为我的应用程序创建一个特定的网络,以便只有我的应用程序可以选择这个网络,而我必须使用 Java 来完成。据我所知,Java 没有 wifi 库。那么我的项目在这里有什么选择呢?

我无法使用以太网连接。我必须使用诸如蓝牙之类的网络,它只能在网络中找到现有的应用程序。

如果我错过了什么,我很抱歉。我也不太擅长网络。

【问题讨论】:

  • 你的问题没有任何意义。以太网连接和 WiFi 连接实际上与 JVM 等用户级进程相同。听起来您想发送一个“广播”数据包,并“发现”您网络上的其他主机。
  • 听起来更像是一个客户端/服务器应用程序,需要能够通过 wifi/蓝牙检测和查询网络设备。您正在创建一个虚拟网络,而不是物理网络,所以这个问题具有误导性。
  • @ElliottFrisch 无法使用以太网连接。
  • @blackcompe 是的,它是一个客户端-服务器应用程序。我实际上对网络一无所知。对不起。对不起,我应该如何创建一个像蓝牙这样的虚拟网络?
  • 蓝牙是一种无线技术。您在其上创建虚拟网络。 imgx64 告诉你,AirDrop 使用多播 DNS 作为其底层技术。这就是你需要知道的。剩下的就看你了。您可以使用 JmDNS,也可以推出自己的解决方案。如果你仍然迷路,你需要做一些阅读。

标签: java networking wifi airdrop


【解决方案1】:

Mac OS X 的 AirDrop 基本上使用mDNS 来发现同一网络上也运行 AirDrop 的其他计算机,然后使用常规 TCP/IP 连接来传输文件。这意味着您不必为“您的应用程序创建一个特定的网络”。

有一个用于 Java 的 mDNS 库,名为 JmDNS

关于 Java 网络的一般信息,我推荐this trail from the Oracle Java TutorialAll About Sockets 部分更具体)。

另请注意,iOS 的 AirDrop 使用涉及蓝牙和 WiFi 的不同方法,这与 Mac OS X 的 AirDrop 不同。

附录:AirDrop 似乎还使用了一些特定于 WiFi 芯片组的功能来与当前网络连接同时创建一个 Ad-Hoc 网络。创建 Ad-Hoc 网络依赖于操作系统,实际上超出了 Java 程序的范围。另请参阅:thisthisthis

但是,只要计算机连接到同一网络,这不应该阻止您尝试 mDNS 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2013-02-15
    • 1970-01-01
    相关资源
    最近更新 更多