iphone - 音频数据的 TCP 套接字通信 - 多服务器到多客户端

标签 iphone ios sockets audio-streaming

我是套接字编程的新手,不太了解它是如何工作的,这是用例,我正在开发一个 iPhone 应用程序,用户可以在其中流式传输来自另一台 iPhone 设备的实时音频(简称多播)

到目前为止我做了什么:

我在服务器上打开了一个端口,它一直在监听来自客户端的传入数据。在 iOS 端,我实现了读取服务器上接收到的数据包并进行相应处理的方法(我使用了 GCDAsyncSocket)

我需要帮助的问题:

上述用例非常适合 2 个用户,一个将音频数据发送到服务器,另一个读取该数据以播放音频。但实际上不会总是有一个用户发起音频数据,他们可能超过 100+,现在当他们都向服务器发送不同的音频数据时,我如何为每个人只接收那里数据的听众过滤数据,我克服这个问题,在每个数据包上添加一个 token ,例如

unique_token:<ffdefa09 fedead3...... //Audio Data

但是这个过程太慢了,因为每个客户端都在监听所有的数据包,并且只处理那些带有分配给它们的 token 的数据包。

无论如何,我们是否可以建立点对点连接,通过该连接,始发设备成为服务器并且只向其监听器发送数据而不打扰其他任何人?

最佳答案

在开始将音频数据传输到服务器之前,您不能添加类似轻型协议(protocol)的东西吗?

iPhone -> server [Request: Start Stream Audio]
server -> iPhone [OK: TCP Port:4444]
// iphone sending audio packets to port 4444


iPhone2 -> server [Request: Start Stream Audio]
server -> iPhone2 [OK: TCP Port:4445]

然后服务器可以使用 TCP 端口 ID 而不是数据包 ID 过滤所有音频 channel (或者我误解了你的问题)

顺便说一句,由于提供商的防火墙,我不认为你可以在蜂窝网络上使用 iPhone 进行任何“真正的”P2P

关于iphone - 音频数据的 TCP 套接字通信 - 多服务器到多客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19488818/

相关文章:

iphone - 在 iPhone 应用程序中创建新 View

ios - Swift - 保存 [String : Any] to NSUserDefauls 的数组

用于播放通过套接字传输的 wav 文件的 iOS 库

ios - UILabel lineBreakMode,在特定字符处中断

java - Java套接字将多个对象发送到同一服务器

C 套接字 : Server gives firefox a downloadable file instead of firefox showing the page

iphone - Table View的带有图片的标题在iPhone 5中不起作用

iphone - 放在哪里||

iphone - 核心数据 - 打破关系

ios - 触摸已移动 : How to know when the touch ended?