C#でUDPパケットを生成し、与えられたIPアドレスに送信するパケットシミュレータをプログラミングしました。シミュレータはパケットを生成してUBUNTU仮想マシンに送信しますが、宛先に問題があります。 C#プログラム、として定義されたデータ形式で:libpcapで "MMM" DateTime形式をキャプチャする際のエラー
namespace PacketSimulator
{
static class Program
{
public static string DateFormat = "MMM dd HH:mm:ss";
.
.
}
}
とパケットが送信されます。
namespace PacketSimulator
{
class ConnectionInfo
{
public DateTime DATE_TIME;
public override string ToString()
{
return DATE_TIME.ToString(Program.DateFormat) + " " + "10.0.72.45 " + ....
}
}
}
しかし、Linux側では、私は何をキャプチャすることができますことは、私が送ったものと少し異なります。
???? 26 18:17:10 10.0.72.45
C#プログラムでは「MMM」(3文字の月名)と定義されていますが、Lipcapでキャプチャするのは4文字のテキストですか?
私が必要とするのは、4つではなく定義された形式でパケットを受信することですか?符号。
アドバイスを事前にいただきありがとうございます。
1.パケットを送信するときに、どのようにテキストをエンコードしますか?これは受信側と一致しますか? 2.ワイヤー上のもの(WireSharkなど)を見ましたか? 3.一般にIPCの場合、日付と時刻の最適なフォーマットはISO-8601: 'yyyy-MM-ddTHH:mm:ss'です。これは他のフォーマットのあいまいさやローカリゼーションの問題を避けます。 – Richard
@Richard 1-エンコーディングは使用されません。私はlibpcapライブラリを問題の本文のように使用しています3 - ありがとう –
もちろん、エンコードが使用されています(暗黙的かもしれませんが、そこにあります):UDPパケットの内容はオクテットの配列ですが、.NETの文字列はバイトの配列なので、変換をエンコーディングする必要があります。これを制御する必要があります。 – Richard