c# - 使用 udp 时确定服务器是否正在监听

标签 c# asynchronous network-programming udp

设置:我想编写一个点对点Connection 类,使用时不区分服务器和客户端。第一个调用connect()的主机将成为等待客户端连接的服务器,第二个将成为连接到服务器的客户端。

为了做到这一点,connect() 方法首先需要检查监听服务器。 a) 第一次发生这种情况时,没有找到服务器,调用 connect() 的一方开始监听 localhost 和配置的传入端口联系。 b) 调用 connect() 的第二方也会检查给定端口上的远程主机,识别服务器并连接到它。

使用 TCP 并不太难,因为 TcpClient.Connect() 在无法建立连接时抛出异常。因此我知道什么时候我是第一个。由于我只使用可靠的 LAN,所以我想使用 UDP。

我的问题:如何确定 UDP 服务器套接字是否正在等待传入数据。

理想情况下,我想之后直接使用异步网络 API。而不是自己处理监听线程。

最佳答案

使用 UDP,通信模型类似于瓶中的消息:您知道它已发送,但无法知道是否有人收到过它。

您需要手动建立通信协议(protocol)以确定远程方是否正在监听(例如让他们发送“是的,我在这里”响应)。这将要求两个端点都接受 UDP 数据报。

关于c# - 使用 udp 时确定服务器是否正在监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57836290/

相关文章:

c# - 如何对轮廓进行排序?

c# - 如何将 groupBox 的角更改为尖角而不是圆形 C# .NET WPF

c# - 是否可以使用 DllImport 访问命名空间?

ASP.NET 异步 Controller 并调用 Sync(); "Sync()"是什么?

java - PrintWriter 不会写入

C# 将 List<object> 转换为原始类型而无需显式强制转换

javascript - 如何执行多个异步函数(非嵌套)以提高性能,但要等待它们完成后再继续

perl - 多路复用回调

network-programming - 通过 C++ 应用程序设置和控制 IP 摄像机

Python 套接字 - 从客户端保持与服务器的连接