设置:我想编写一个点对点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/