【问题标题】:What defines a "direct communication" between 2 computers ( or a phone and a computer ) ? for UDP (or TCP ) communication?什么定义了两台计算机(或电话和计算机)之间的“直接通信”?用于 UDP(或 TCP)通信?
【发布时间】:2012-06-01 16:06:37
【问题描述】:

我想编写一个程序以无线方式访问我笔记本电脑上的 Android 手机摄像头,因此,我的手机将充当无线网络摄像头。 我想在 Java 中实现 UDP(或 TCP)协议,以便在我的笔记本电脑和手机之间进行通信。

我正在考虑在我的笔记本电脑中创建一个 ad-hoc 无线网络并首先将我的手机连接到它,然后编写代码以在我的笔记本电脑上创建一个服务器套接字,并在我的手机上创建一个客户端套接字。 我知道这段代码适用于服务器和客户端之间的“直接通信”。但是这种自组织网络通信的方法是否算作“直接通信”? 如果没有,我该怎么做才能做到这一点?

首先感谢您阅读我的整个问题,并且, 如果你能帮我回答这个问题,非常感谢

:)

【问题讨论】:

  • 如果我知道您所说的“直接沟通”是什么意思,可能会更容易回答这个问题。这当然是手机和计算机之间更直接的通信方式之一,虽然我认为 USB 或其他东西可能更接近于你所说的“直接通信”,但是你不会使用 UDP 或 TCP。跨度>
  • gc2dm 或者 ESfileExplorer 应用通过 LAN 与计算机连接的方式怎么样。

标签: android tcp wifi android-wifi


【解决方案1】:

首先:不要专注于 ad-hoc 网络。在大多数情况下,具有基础设施模式接入点的 WiFi 将可用。如果在旅途中,所有最新版本的 Android 都可以充当无线接入点。

所以让我们假设两个设备都连接到同一个网络并且能够相互访问(使用 IP 协议) - 换句话说,它们能够ping 彼此。您必须解决的下一个问题是:两个应用程序如何找到彼此? Bonjour/Zeroconf 可能是一个解决方案(请参阅Are there any other Java libraries for bonjour/zeroconf apart from JMDNS?)。

下一个问题是:您要使用什么协议?您提到了 TCP 和 UDP。在大多数情况下,UDP 将用于传输视频数据,因为您具有较低的延迟并且视频编解码器可以容忍丢失的数据包。

有了这些信息,您可以创建一个ServerSocket 并且(从客户端)知道在哪里连接到它。

【讨论】:

  • 谢谢。我正在以类似的方式思考,通过在 java 中实现套接字。 UDP。我正在考虑使用“vlcj”库来重建发送的帧。
最近更新 更多