检查谁发送了UDP报文

本文关键字:UDP 报文 检查 | 更新日期: 2023-09-27 18:02:16

我正在制作一个使用UDP发送/接收数据包的简单游戏。我将发送诸如"loc 321,108"之类的数据包来将玩家移动到321,108,但我无法找出一种好方法来检查哪个用户要移动/更新位置,因为发送"loc myusername 321,108"将大大增加带宽使用。

谁能给我指个正确的方向?

谢谢。

检查谁发送了UDP报文

一个建议是使用发送者IP地址(假设每台PC上有一个玩家)。细节:

c#从UDP消息中获取发送者地址

基本上你只需要使用以下语句:

EndPoint remote_ep = new IPEndPoint(IPAddress.Any, 0);
sendSocket.ReceiveFrom(data, ref remote_ep);   //remote_ep now contains the originators IP

在数据包中添加短字符串并不是什么大问题,除非你以非常高的速率发送它们。对于一个简单的游戏来说,如果你发送了那么多数据包,你可能就做错了。你唯一需要担心的是超过你网络的MTU,你可能不会,因为现在大多数网络的MTU大约是1500字节。

如果你真的认为你负担不起几个字节的对等体名称,你可以尝试使用远程套接字地址(IP地址和UDP端口)。不要只使用远程IP地址,因为它可能不是唯一的。我不确定如何在c#中实现

使用recvfrom获取数据来源的地址。下面是一个很好的参考示例:

http://www.beej.us/guide/bgnet/output/html/multipage/recvman.html

从那里,服务器将需要一个用户列表和链接到该用户的地址。也是一种处理来自地址的数据的方法,没有用户绑定到它们。