【发布时间】:2017-05-31 19:31:26
【问题描述】:
我在网络编程方面没有太多经验,但出现了一个有趣的问题,需要它。服务器将向其他机器传输多个不同类型的数据流。每台机器都应该能够选择它想要接收的流(一个或多个)。整个设置仅限于本地网络。最初,只有两个客户端,但如果可能的话,我想设计一种可扩展的方法。
现有的服务器代码,它只流式传输单个流,正在使用 TCP 流式套接字来执行此操作。但是,从有关该主题的一些阅读中,我不确定这种方法是否可以很好地扩展到多个流和多个客户端。原因是:两个想要接收相同流但通过不同 TCP 套接字连接的客户端不会导致带宽浪费吗?尤其是与允许多播的 UDP 相比。
由于我缺乏经验,我依靠更知情的人来给我建议:考虑到我确实希望流是可靠的,是否值得从头开始使用 UDP,并在其中实现可靠性,而不是继续使用TCP?或者,通过设计合适的网络结构会更好地解决这个问题吗?如果需要,我很乐意提供更多详细信息。谢谢。
更新:我目前正在查看PGM 和emcaster 以获得可靠的多播。服务器端必须有 C# 实现,客户端必须有 python 实现。
【问题讨论】:
-
首先。如果客户端没有从流中获取所有数据或顺序错误,这有关系吗?
-
可靠性很重要,因为流中的每条消息都应该是连续的。客户将依靠正确的顺序对其进行有用的处理。
-
好吧,我不会费心使用 UDP。为什么要尝试重新实现某人已经做出的东西来确保这两个非常重要的问题
-
你是对的。但是有没有一种可以多播但又可靠的协议呢?
-
可靠性需要双向通信,但多播(一对多)是单向的。一台主机上的任何缺失信息都需要重新发送给所有主机。
标签: networking tcp udp