【问题标题】:Is this a good behaviour of a both TCP and UDP program?这是 TCP 和 UDP 程序的良好行为吗?
【发布时间】:2014-09-19 16:40:47
【问题描述】:

我正在用 Python 开发一个客户端-服务器游戏,每个量程,服务器都必须将游戏的状态发送给客户端。

我使用 UDP 和 TCP 连接来开发它。 UDP保证游戏状态的发送速度,TCP用于可靠性部分。

这是一个好方法吗?

所以每个量子服务器都会像这样发送数据:

while playing:
    data = computeGameData()
    sendNewPlayUDP(data)
    sendNewPlayTCP(data)

    time.sleep(sleeptime)

我测试了它,它似乎工作得很好,但我想知道线程是否会因为 TCP 挣扎而阻塞。也许有更好的方法。

【问题讨论】:

  • 据我所知,很多软件同时使用 TCP 和 UDP。
  • 当然可以,但他们是这样用的吗?通过 udp 和 tcp 发送每个状态?

标签: python tcp udp


【解决方案1】:

根据:

http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/

您根本不应该使用 TCP。本文建议使用 UDP 并为您绝对希望接收和确认的数据包添加额外的逻辑。这篇文章还指出,TCP 包可能会干扰 UDP 包,增加 UDP 丢包率。

你也可以看看:

https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

在许多情况下可以容忍丢包。在 TCP 和 UDP 通道上发送相同的数据看起来有点矫枉过正。

【讨论】:

  • 我有点同意。通过 udp 和 tcp 发送数据似乎是最终可行的简单解决方案。我通过向我的 udp 处理程序添加一些额外的逻辑来改变这一点,它工作得更好。
猜你喜欢
  • 2018-11-17
  • 1970-01-01
  • 2013-12-13
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 2012-04-08
相关资源
最近更新 更多