使用Visual Studio 2010 - C#
我们的代理机构Utility Mobile Vehicle Rockets。这些设备本质上是一个移动wifi路由器,您插入宽带卡。它们还具有内置GPS模块,该设备的一个功能是它具有MultiCast并将通过多播发送GPS坐标(以及其他信息)。我想要做的是捕获来自此设备的数据,然后使用GPS信息进行各种操作。
我试图绕过Multicast并尝试了许多不同的代码来尝试捕获数据。唉,我无法捕获一条能够处理的信息。 Rocket设备上的多播设置为:
以下是我一直尝试使用的代码,我从here in Listing 10.10得到了(此页面在其他几个StackOverflow问题中被引用...)当我运行控制台程序时,它只是坐在那里而没有信息显示在屏幕上。我没有从Try / Catch块获得任何异常消息。我知道计算机正在接收来自Rocket的信息,因为Utility自己的“监控程序”每隔几秒就会更新一次,而WireShark显示该端口上正在发生某些事情(虽然我不知道如何阅读它并且不完全理解它......)有什么我想念的吗?注意:我正在运行此代码时,我没有使用Utility自己的监控程序......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace MulticastUDPListener
{
class Program
{
private static void StartListener()
{
try
{
UdpClient sock = new UdpClient(4004);
Console.WriteLine("Ready to receive…");
sock.JoinMulticastGroup(IPAddress.Parse("224.0.0.1"), 50);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
byte[] data = sock.Receive(ref iep);
string stringData = Encoding.ASCII.GetString(data, 0, data.Length);
Console.WriteLine("received: {0} from: {1}", stringData, iep.ToString());
sock.Close();
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
static void Main(string[] args)
{
StartListener();
}
}
}