0

Visual Studio 2010 の使用 - C#

私たちの代理店には、ユーティリティ移動車両ロケットがあります。これらのデバイスは基本的に、ブロードバンド カードを接続するモバイル Wi-Fi ルーターです。これらには GPS モジュールも組み込まれており、このデバイスの機能の 1 つは、マルチキャストがあり、GPS 座標を (他の情報とともに) マルチキャストで送信することです。私がやろうとしているのは、このデバイスからのデータをキャプチャし、GPS 情報を使用してさまざまなことを行うことです。

私はマルチキャストに頭を悩ませようとし、さまざまなコードを試してデータをキャプチャしようとしました。残念ながら、処理できる情報を 1 つも取得できていません。マルチキャスト用の Rocket デバイスの設定は次のとおりです。

  • マルチキャスト アドレス: 224.0.0.1
  • マルチキャスト ポート: 4004
  • マルチキャスト TTL: 16

以下は、私が使用しようとしているコードです。リスト 10.10 のここから取得しました (このページは、他のいくつかの StackOverflow の質問で参照されました...) コンソール プログラムを実行すると、そこに留まり、画面。Try/Catch ブロックから例外メッセージが表示されません。ユーティリティ自体の「監視プログラム」が数秒ごとに更新され、WireShark がそのポートで何かが起こっていることを示しているため、コンピューターが Rocket から情報を受信して​​いることはわかっています (ただし、それを読み取る方法がわからず、完全には理解していません)。それ...) 私が欠けているものはありますか...? 注:このコードを実行している間、ユーティリティ独自の監視プログラムは使用していません...

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