0

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

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

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

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

4

1 回答 1

0

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

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

于 2019-04-19T18:29:48.533 回答