【问题标题】:.Net , TCP vs UDP , async multiple messages/clients.Net,TCP vs UDP,异步多个消息/客户端
【发布时间】:2019-09-09 23:13:54
【问题描述】:

我正在使用 .Net 我正在寻找创建服务并在 TCP 或 UDP 之间寻找。服务应该支持多个客户端,所以我使它与.Net SocketAsyncEventArgs 异步,因为我已经看到它具有更好的性能和更少的内存消耗。我知道 TCP 比 UPD 慢,但我想知道你对在这两种情况下什么会更快的看法

1) 使用 TCP 和 SocketAsyncEventArgs,每个客户端都会连接,一旦服务接受连接,基本上每个客户端都有一个端点开始发送和接收,因此可以在连接打开(接受)时发送多条消息。基本上每个客户端都有自己的连接,并且可以有两种方式的通信

2) 每个客户端都会向同一个 UDP 服务器端点发送一个 UDP 数据报,所以基本上我有一个端点供所有客户端发送所有消息,然后处理它们并将数据报分别发送回每个客户端。

也许我对 TCP/UPD 有误解,但基本上问题是,一旦我每个客户端都有一个开放的 TCP 连接,当所有客户端共享相同的初始 UDP 端点时,来回发送 UDP 消息是否会更慢。

【问题讨论】:

  • 如果不了解您的应用程序将要做什么,就不可能回答这个问题。如果您正在发送可以容忍丢失数据包的内容(例如视频流),则 UDP 可能没问题。如果你发送的东西不能容忍丢包,UDP 不是一个合适的选择。

标签: .net networking tcp udp socketasynceventargs


【解决方案1】:

您首先考虑的不应该是性能。 TCP 是可靠的协议,UDP 不是。如果您实施 UDP,那么您将需要实施额外的逻辑来确保消息到达目的地。

UDP 在几个有限的场景中有意义:(1) 当您想要广播消息时(TCP 无法广播)或 (2) 当您并不真正关心消息是否 100% 到达目的地时.

【讨论】:

  • 我知道这些规则,基本上我的问题是使用 TCP 建立的连接一次发送和接收几个客户,与 UPD 必须接收来自所有客户端的包相比,它的执行速度有多慢同一个端口。
猜你喜欢
  • 2015-11-05
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多