无法捕获组播数据包 - C#

时间:2013-09-02 20:00:23

标签: c# udp multicast udpclient

使用Visual Studio 2010 - C#

我们的代理机构Utility Mobile Vehicle Rockets。这些设备本质上是一个移动wifi路由器,您插入宽带卡。它们还具有内置GPS模块,该设备的一个功能是它具有MultiCast并将通过多播发送GPS坐标(以及其他信息)。我想要做的是捕获来自此设备的数据,然后使用GPS信息进行各种操作。

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

  • MultiCast地址:224.0.0.1
  • MultiCast端口:4004
  • MultiCast TTL:16

以下是我一直尝试使用的代码,我从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();
        }
    }
}

0 个答案:

没有答案