0

使用 Visual Studio 2010 - C#

我们的机构有多功能机动车辆火箭。这些设备本质上是一个移动 wifi 路由器,您可以将宽带卡插入其中。它们还有一个内置的 GPS 模块,该设备的特点之一是它具有 MultiCast,并将通过多播发送 GPS 坐标(以及其他信息)。我想要做的是捕获来自该设备的数据,然后使用 GPS 信息做各种事情。

我试图围绕 Multicast 进行思考,并尝试了许多不同的代码来尝试捕获数据。唉,我无法捕获一条能够处理的信息。Rocket 设备上的组播设置为:

  • 多播地址:224.0.0.1
  • 组播端口:4004
  • 多播 TTL:16

下面是我一直在尝试使用的代码,它是从代码清单 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();
        }
    }
}
4

0 回答 0