我想开发一个用于 LAN 调用的 android 应用程序。我的应用程序类似于 whatsapp、viber 等应用程序,所以我用谷歌搜索了相同的应用程序。我从不同的答案中得到的是:
- 每当我们安装 whatsapp 时,whatsapp 服务器都会注册我们的号码和联系人列表。该应用程序不断地 ping 服务器并更新其在服务器上的状态。
- 当我们打开应用程序时,它会从服务器获取数据,如果在联系人列表中找到某个号码,它会显示该号码的状态和其他内容。
- 每当我们向某人发送消息时,消息都会发送到服务器并保留在那里,直到成功发送。
对于我的应用,这两个步骤是:
- 找到所有安装了我的应用程序的设备、它们的 IP 和 mac 地址。
- 当找到设备时,允许它们之间的通话。
对于第 1 步,我有两个选择:
作为whatsapp,我可以有一个服务器。每当安装应用程序时,它都会注册手机的信息。该应用程序 ping 服务器并显示其状态。
我可以使用自己的网络设备发现代码。此代码扫描网络并查找设备。 这个步骤代价高昂,整个网络都被数据包淹没了。而且编写
网络设备发现代码
也相当困难。
对于第二步,我想实现客户端套接字编程,只需将一台设备的麦克风连接到另一台手机的扬声器即可。我认为这具有挑战性,但它是可能的。
请帮助我网络发现代码
或服务器设置。我对android开发非常熟悉,但对网络非常陌生。
这些设备之间如何进行通话?
我搜索了答案并找到了以下链接:Peer-to-peer SIP call with Android SIP Stack?
how to implement voip in android
VOIP on Android libraries or sample code
我也在quora上提了一个问题:
https://www.quora.com/How-can-I-develop-an-app-having-feature-like-whatsapp-calling-in-android
但是,我还是卡在了开头。请帮助我。
最佳答案
还没有一个完整的答案,但这里有一些要寻找的东西:
假设 Java 是您的语言,请使用多播 Network discovery in Java using multicasting和 https://en.wikipedia.org/wiki/IP_multicast
调用需要更多描述。通话是否立即开始(只要对等方检测到对方)?如何知道身份信息 - 号码或用户名等?
关于android - android中的局域网调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32027180/