我想让多个类似服务器的应用程序从同一UDP端口接收数据。每个应用程序将具有两个IP地址和端口,分别与两个与之通信的客户端相对应。
问题:UDP端口如何处理数据?如果每个应用程序都有两个<html>
<head>
<!--Titel/Icon/CSS files-->
</head>
<header>
<!--Banner/2 small images-->
</header>
<body class="GW-CT-AUG">
<ul id="navigatie_menu">
<!--Other pages (history-about us-home(index.html) -->
<li><a>Game Modes</a>
<ul>
<!--The different gamemodes-->
</ul>
</li>
<li><a>Maps</a>
<ul>
<!--The different maps-->
</ul>
</li>
<li><a>Wapens</a>
<ul>
<!--The different guns-->
</ul>
</li>
<li><a>Equipment</a>
<ul>
<!--The different Equipment-->
</ul>
</li>
</ul>
<center>
<!--An images-->
<p class="tekst">
<!--Information about the game-->
</p>
</center>
</body>
<footer class="footer" id="footer-aug">
<!--footer-->
</footer>
</html>
方法来处理数据,它是否会通过从目标IP地址中挑选数据来像本例中那样工作?
Sketch of how I think it works
还是那些beginreceivefrom()
方法必须等待接收到的最旧的数据被处理?
是否可以检查是否有等待从某个IP读取的数据?例如:receivefrom()
?
编辑:我进行了搜索,发现如果我使用socketoption REUSEADDR,我可以将多个应用程序与一个套接字绑定到相同的ip和端口,问题: 我必须处理该端口收到的每条消息吗?还是我可以使用beginreceivefrom并且它将过滤来自其他IP的消息?如果发生这种情况,将从接收到的最早消息(可能尚未处理)中开始接收消息,然后阻止该应用程序,直到出现来自可接受IP的消息为止?
答案 0 :(得分:0)
如果要通过多个特定IP接收数据,则应为每个IP创建一个套接字。这样,您可以轻松区分IP。您可以绑定到多个IP地址上的同一端口。客户端会将其数据包发送到IP和端口的特定组合。服务器操作系统将以此方式决定将数据转发到哪个套接字。
一种完全不同的设计是仅使用一个IP和端口,但让客户端说出它想与分组数据内部的哪个应用程序进行通信。您可以在数据前添加一个字节,以告知请求的类型(例如0 = request type A, 1 = request type B
)。这样,您需要处理较少的网络配置。