【发布时间】:2020-06-04 05:34:02
【问题描述】:
我想以编程方式将文件从具有 Wi-Fi 访问权限、运行 Linux(客户端)的 Raspberry Pi 传输到 Android 手机(主机)。我使用this link 作为如何在 Android 上设置 P2P 连接的指南,但我找不到任何参考资料来处理非 Android 设备上的客户端。我知道我可以使用this link 提供有关将客户端连接到主机的文档,但我不知道如何实际发送文件。
基本上,我想知道的是:从 Android 文档中,我可以在 Linux 上做些什么来获得与此相同的效果吗?我完全被误导了吗?
/**
* Create a client socket with the host,
* port, and timeout information.
*/
socket.bind(null);
socket.connect((new InetSocketAddress(host, port)), 500);
/**
* Create a byte stream from a JPEG file and pipe it to the output stream
* of the socket. This data is retrieved by the server device.
*/
OutputStream outputStream = socket.getOutputStream();
ContentResolver cr = context.getContentResolver();
InputStream inputStream = null;
inputStream = cr.openInputStream(Uri.parse("path/to/picture.jpg"));
while ((len = inputStream.read(buf)) != -1) {
outputStream.write(buf, 0, len);
}
outputStream.close();
inputStream.close();
编辑:也许我困了,但如果设备已连接,有没有办法像this 一样简单地对待它? Android 文档声明它支持 UPnP 和 Bonjour 作为服务,如果这可以提供任何方向的话。如果是这样,在传输大型(最大 5Gb)文件时我应该注意什么?如果不相关,我很抱歉。
编辑 2:建立连接的解决方案是在wpa_cli 特别是,命令p2p_find 发现,p2p_peers 查看找到了什么,p2p_connect <MAC_of_peer> pbc go_intent=0 停止搜索并连接到 Android 主机。您可以看到它显示为带有ip a 的本地网络。但是,现在我似乎在 Android 端遇到了问题,冒险继续在this question。
【问题讨论】:
-
我相信这是可能的。谷歌搜索“Raspberry Pi Wifi Direct”,例如:raspberrypi.stackexchange.com/questions/45451/…
-
我很欣赏这个发现,但是这个例子几乎每个我发现的例子都有问题。指令在建立连接时结束。我希望能够发送数据。
标签: android linux sockets wifip2p