【发布时间】: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