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();
}
}
}