2016-05-25 14 views
0

基本的に私のコードは、すべてを取得するために必要なときにUDPプロトコルパケットの一部をキャプチャしています。C#UdpClient "Receive" wiresharkで指定されたパケットの一部のみを与えます

UdpClient listener = new UdpClient(43965); 
IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 43965); 

long count = 0; 

while(1 == 1) 
{ 
    if (listener.Available > 0) 
    { 
     byte[] data = listener.Receive(ref endpoint); 
     Console.WriteLine(Encoding.ASCII.GetString(data)); 
    } 
} 

私は取得しています(ハイライト):

enter image description here

は私が取得する必要があります。

enter image description here

+1

あなたが何を得ているかまだ明確ではありません。文字列 "MICS"だけですか? – Evk

+0

nullバイトがないことは確かですか? (nullバイト=値0のバイト)通常、テキストがレンダリングされるときに、文字列の終わりの識別子として機能します。たとえば、 'MICS \ 0lm'(' \ 0'はヌルバイトです)は、MICSのようにレンダリングされます –

+0

Visual Vincentあなたは正直、ありがとうございました。 – user3183586

答えて

1

ビジュアルヴィンセントは、 "MICS" が0x10のに続いて言ったようにそして0x00のように、パケットのその部分をヌルで終わる文字列として扱うならば、それは "MICS \ x10"です。

あなたが発見したように、後ろのデータを見つけるために生のバイトを見る必要があります。

データの前には、の前に、UDPヘッダー、IPヘッダー、およびイーサネットヘッダーがあります。あなたはUDPソケットから読み込むときにそれらのヘッダーを取得しません。UDPペイロードを取得するだけです。

関連する問題