问题描述
我正在努力使自己了解UDP通信,并且在大多数情况下,这似乎很容易。我得到了一个简单的单播工作,即通过互联网将数据包直接发送到IP和端口(与端口转发搞混之后),并且工作正常。
但是我希望使用broadcast方法(至少,这是我认为需要的?)。基本上,我想运行一个服务器,该服务器生成实时数据,并且需要流式传输到客户端。但是,服务器不知道客户端的IP地址(因为它是动态的),因此客户端需要先“连接”到服务器,然后服务器才能将此数据广播到该客户端-还是客户端只是“收听”此广播?无论哪种方式,我都需要将数据放入客户端。
首先,我无法弄清楚UdpClient和使用Socket的Udp协议之间的实际区别。某些尝试已经奏效,但前提是服务器和客户端都在同一台计算机上运行。只要将客户端放在另一台计算机(本地网络)上,就什么都没有!理想情况下,我希望它可以通过互联网运行。需要指出的另一件事是,客户端很可能将使用蜂窝网络(因此端口转发可能是一个问题-但我稍后会担心)。这是Unity中的C#。
我的服务器代码;
ndarray
我的客户代码;
//Create UDP Client for broadcasting the server
serverOriginator = new UdpClient(broadcastPort);
serverOriginator.Enablebroadcast = true;
remoteEP = new IPEndPoint(IPAddress.Parse(serverIP),broadcastPort);
InvokeRepeating("broadcastRandomData",1f);
//Or,should I use Socket instead?
Socket s = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);
IPAddress broadcast = IPAddress.Parse(serverIP);
IPEndPoint ep = new IPEndPoint(broadcast,broadcastPort);
byte[] _msg = Encoding.ASCII.GetBytes("Heeey");
s.SendTo(_msg,ep);
对此,我将不胜感激,因为它开始使我发疯。非常感谢。
-更新---
我还发现我需要使用一个未知的特殊IP地址进行广播; https://remotemonitoringsystems.ca/broadcast.php
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)