.net - 像 UDP 一样广播,具有 TCP 的可靠性

标签 .net networking tcp udp

我正在开发一个完全在单个网络内运行的 .net 解决方案。当用户对系统进行更改时,我想发布一个公告,让其他人听到并采取相应的行动。有没有一种方法可以像这样广播消息(例如 UDP 允许您这样做)同时保持有保证的传送(例如 TCP)?

这是在一个小型网络(30 个左右的客户端)上,如果这会有所作为的话。

最佳答案

几乎所有游戏都需要 UDP 的快速响应特性(以及较小程度上的无连接特性)和 TCP 的可靠性。他们所做的是在 UDP 之上构建自己的可靠协议(protocol)。这使他们能够将数据包突发到任何地方,并有选择地使它们可靠。

可靠的数据包系统通常是一个简单的重试直到确认系统,比 TCP 更简单,但有些协议(protocol)远远超出 TCP 所能提供的范围。

你的情况听起来很简单。您可能能够自己制定最干净的解决方案 - 只需让每个客户端发回“我听到你”的响应并让服务器继续尝试直到它收到(或放弃)。

如果您想要更多,大多数自定义协议(protocol)库都是用 C++ 编写的,所以我不确定它们对您有多大用处。然而,我在这里的知识是几年前的——也许现在已经移植了一些协议(protocol)。嗯...RakNet 和 enet 是我想到的两个 C/C++ 库。

关于.net - 像 UDP 一样广播,具有 TCP 的可靠性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31572/

相关文章:

angular - ionic2 InAppBrowser( ionic native )加载错误不起作用

java - Java 中 URL 类中的 getHost 和 getAuthority 方法有什么区别?

linux - ubuntu Linux 中 ejabberd 的 AWS 自定义 TCP 端口访问?

C#.net Windows 服务 - 如何在文件中记录 TCP 端口事件?

c# - 我应该使用什么 IP/端口来进行 TCP 套接字服务器/客户端连接?

c# - 来自 MemberExpression 的反射类型

c# - ngen 是如何工作的?

当这些类使用某些对象时,C# Windows 会丢失对类库的引用吗?

c# - Windows 应用程序的身份验证机制

linux - 当我尝试通过原始套接字连接 TCP 服务器时,为什么它不回复我的 syn 数据包?