繁体   English   中英

C#:Udp套接字和receivefrom()方法

[英]C#: Udp socket and receivefrom() method

我想让多个类似服务器的应用程序从同一UDP端口接收数据。 每个应用程序将具有两个IP地址和与它们通信的两个客户端相对应的端口。

问题:UDP端口如何处理数据? 如果每个应用程序都有两个beginreceivefrom()方法来处理数据,是否会通过从目标IP地址中选择数据来像本示例中那样工作?

我认为其工作原理的草图

还是那些receivefrom()方法必须等待接收到的最旧的数据被处理? 是否可以检查是否有等待从某个IP读取的数据? 例如: socket.dataFromThisIPEndPoint(ipep)

编辑:我进行了搜索,发现如果我使用socketoption REUSEADDR,我可以将多个应用程序与一个套接字绑定到相同的ip和端口,问题:我是否必须处理该端口收到的每条消息? 还是我可以使用beginreceivefrom并且它将过滤来自其他IP的消息? 如果发生这种情况,将开始检查可能到达的最旧消息(可能尚未处理)并阻止应用程序,直到出现来自可接受IP的消息为止?

如果要通过多个特定IP接收数据,则应为每个IP创建一个套接字。 这样,您可以轻松区分IP。 您可以绑定到多个IP地址上的同一端口。 客户端会将其数据包发送到IP和端口的特定组合。 这是服务器操作系统将决定将数据转发到哪个套接字的方式。

一种完全不同的设计是仅使用一个IP和端口,但让客户端说出它要与数据包数据内部对话的应用程序。 您可以在数据前添加一个字节,以告知请求的类型(例如0 = request type A, 1 = request type B )。 这样,您需要处理较少的网络配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM