【发布时间】:2016-05-17 15:49:04
【问题描述】:
我的最终目标是将用户的语音输入流式传输到 Android 设备并传输到桌面应用程序。
对于 Android 设备,它显然会运行基于 java 的 Android 应用程序。对于桌面应用程序,我正在考虑编写一个 Java 小程序来接受流。
这些是维基百科解释的 TCP 和 UDP 的优点和缺点
传输控制协议是一个面向连接的协议,它 意味着它需要握手来建立端到端 通讯。建立连接后,可能会发送用户数据 双向连接。
可靠 – TCP 管理消息确认、重传和 暂停。多次尝试传递消息。如果得到 中途丢失,服务器会重新请求丢失的部分。在 TCP 中, 要么没有丢失数据,要么在多次超时的情况下, 连接断开。 Ordered – 如果两条消息通过一个 按顺序连接,第一条消息将到达接收方 先申请。当数据段以错误的顺序到达时,TCP 缓冲区延迟乱序数据,直到所有数据都可以正确 重新订购并交付给应用程序。重量级——TCP 需要三个数据包来建立一个套接字连接,在任何用户之前 可以发送数据。 TCP 处理可靠性和拥塞控制。 流式传输——数据作为字节流读取,没有区别 指示被传输到信号消息(段)边界。 用户数据报协议是一种更简单的基于消息的无连接 协议。无连接协议不设置专用 端到端的连接。通信是通过传输来实现的 从源到目的地的单向信息 验证接收器的就绪或状态。
不可靠 – 当发送 UDP 消息时,不知道它是否会 到达目的地;它可能会在途中迷路。没有 确认、重传或超时的概念。未订购—— 如果将两条消息发送给同一收件人,则发送顺序 他们的到来无法预测。轻量级 - 没有订购 消息,没有跟踪连接等。它是一个小型传输层 设计在IP之上。数据报——数据包单独发送,并且 只有当它们到达时才检查完整性。包有明确的 这是在收到时兑现的边界,这意味着在读取操作 接收器套接字将产生一整条消息,就像它最初一样 发送。无拥塞控制——UDP 本身不能避免拥塞。 申请时必须实施拥塞控制措施 等级。广播 - 无连接,UDP 可以广播 - 发送 数据包可以被寻址以被所有设备接收 子网。
我希望用户的语音流在 Android 将其传输到桌面应用程序时不会中断且稳定。
除了简单地考虑维基百科列出的两种不同技术的优缺点之外,在选择技术时我还应该注意什么?
UDP 和 TCP 哪个更好?
【问题讨论】:
标签: java android sockets audio tcp