java - 是否可以在两个 Android 设备之间直接将数据传输给同一网络中的其他用户?

标签 java android

假设我有两个 Android 移动设备,连接到同一无线网络,并且该网络无法访问外部/互联网。

在没有第三方软件的情况下,是否可以在不知道对方ip、不创建热点的情况下通过wifi传输数据?就像我们在 Windows 上所做的那样(如果 2 台电脑在同一网络上,他们可以直接共享信息,无需访问互联网)

从基础知识开始,我想开发一个应用程序,其中同一网络上的 Android 手机出现在列表中,然后用户选择其中一个并写入一些内容 - 如果其他用户正在运行相同的应用程序,出现在他的手机上(然后他当然可以回复 - 基本上是聊天。

我知道这没有实际意义,但相信对于我需要做的事情来说是有意义的(当然这不是聊天)。如果有人知道任何事情,请帮助我 - 我什么也没找到。

提前致谢。

最佳答案

如果您想使用网络将数据或消息从一部手机发送到另一部手机,您最终将需要接收方手机的 IP 地址。但是,如果您不关心针对特定手机,您始终可以发送网络上的每个设备都应接收的 UDP 广播数据包。

如果您不想手动指定 IP,则需要创建一个电话用来发现网络上所有其他电话的发现协议(protocol)。您可以扫描所有可用的 IP 地址并检查它们是否是有效的 Android 手机。或者,您可以让每部电话使用发送到预定义端口的 UDP 广播数据包来广播其在网络上的存在。

一旦您发现了网络上的所有电话,您就可以决定如何在电话之间发送数据,并且有数百个示例说明如何使用套接字在设备/计算机/进程之间发送数据。

关于java - 是否可以在两个 Android 设备之间直接将数据传输给同一网络中的其他用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340453/

相关文章:

Java 2-D ArrayList : Adding Values.

java - Android 在服务类中创建新线程

android - 在 DrawerLayout 上禁用手势监听器

java - Android 文件 IO : I and O Accessing Different Files

java - 如何在 BitSet 缓冲区的开头添加一位?

java - 从现有的 byte[] 生成新的 byte[]

java - 使用静态方法更改类以在 Java 中进行接口(interface)的二进制兼容性

java - systemML :'JavaPackage' 不可调用。当我使用 MLContext 时

android - 如何检测Home Activity当前是否在ActivityStack的顶部

android - setState 不适用于 Flutter 中的 DropDown 按钮