.net - .Net,TCP vs UDP,异步多个消息/客户端
问题描述
我正在使用.Net 我正在寻找创建服务并在 TCP 或 UDP 之间寻找。服务应该支持多个客户端,因此我将其与 .Net SocketAsyncEventArgs 异步,因为我已经看到它具有更好的性能和更少的内存消耗。我知道 TCP 比 UPD 慢,但我想知道您对在这两种情况下更快的方法的看法
1)使用TCP和SocketAsyncEventArgs,每个客户端都会连接,一旦服务接受连接,基本上每个客户端都有一个端点开始发送和接收,因此可以在连接打开(接受)时发送多条消息。基本上每个客户端都有自己的连接,并且可以有两种方式的通信
2) 每个客户端都会向同一个 UDP 服务器端点发送一个 UDP 数据报,所以基本上我有一个端点供所有客户端发送所有消息,然后处理它们并将数据报分别发送回每个客户端。
也许我对 TCP/UPD 有一个错误的概念,但基本上问题是,一旦我每个客户端都有一个开放的 TCP 连接,当所有客户端共享相同的初始 UDP 端点时,来回发送 UDP 消息是否会更慢。
解决方案
您首先考虑的不应该是性能。TCP 是可靠的协议,UDP 不是。如果您实施 UDP,那么您将需要实施额外的逻辑来确保消息到达目的地。
UDP 在几个有限的场景中是有意义的:(1) 当你想要广播消息时(TCP 不能广播)或 (2) 当你并不真正关心消息是否 100% 到达目的地时。
推荐阅读
- django - Django - 从 POST 中获取值
- c - 如何从偏移量中提取特定位
- c++ - Clang:编译 C++ 时出错预期的成员名称或“;” 在声明说明符之后
- hyperledger-fabric - Hyperledger Fabric 中的恶意行为者?
- mysql - 如何在mysql中选择每组的百分比值
- python - 如何在python中合并标题列?
- shell - sh: 0: 无法在 jenkin 执行 shell 中打开
- java - 试图弄清楚如何在获得所有解决方案后停止这个 n 皇后方法,有什么方法可以解决这个问题?
- java - 如何使用 Jackson DataType: JSR310 Deser 独立?
- laravel - 日期解析在 laravel carbon 中不起作用