我的项目是创建一个类似于 Apple 的 AirDrop 的应用程序。为此,我需要为我的应用程序创建一个特定的网络,以便只有我的应用程序可以选择这个网络,而我必须使用 Java 来完成。据我所知,Java 没有 wifi 库。那么我的项目在这里有什么选择呢?
我无法使用以太网连接。我必须使用诸如蓝牙之类的网络,它只能在网络中找到现有的应用程序。
如果我错过了什么,我很抱歉。我也不太擅长网络。
我的项目是创建一个类似于 Apple 的 AirDrop 的应用程序。为此,我需要为我的应用程序创建一个特定的网络,以便只有我的应用程序可以选择这个网络,而我必须使用 Java 来完成。据我所知,Java 没有 wifi 库。那么我的项目在这里有什么选择呢?
我无法使用以太网连接。我必须使用诸如蓝牙之类的网络,它只能在网络中找到现有的应用程序。
如果我错过了什么,我很抱歉。我也不太擅长网络。
Mac OS X 的 AirDrop 基本上使用mDNS来发现同一网络上也运行 AirDrop 的其他计算机,然后使用常规 TCP/IP 连接来传输文件。这意味着您不必为您的应用程序创建“特定网络”。
Java 有一个名为JmDNS的 mDNS 库。
有关 Java 网络的一般信息,我推荐Oracle Java 教程中的这条线索(All About Sockets
更具体的部分)。
另请注意,iOS 的 AirDrop 使用涉及蓝牙和 WiFi 的不同方法,这与 Mac OS X 的 AirDrop 不同。
附录:看起来 AirDrop 还使用一些 WiFi 芯片组特定的功能来同时创建一个 Ad-Hoc 网络和当前的网络连接。创建 Ad-Hoc 网络依赖于操作系统,实际上超出了 Java 程序的范围。另请参阅:this、this和this。
但是,只要计算机连接到同一网络,这不应该阻止您尝试 mDNS 方法。