问题描述
|
我试图从防火墙接收IPFIX / Netflow数据,然后使用接收到的数据从MSDN网站上获得一个代码示例,以创建UDP侦听器/客户端。
该代码可以正常工作,并开始显示数据,但是它的行话(请参见下文)因此我想我没有正确解码它。
有谁知道我需要做什么才能以正确的格式获取数据?
我使用的代码是:
using System;
using System.Net;
using System.Net.sockets;
using System.Text;
public class ConsoleApplication2
{
private const int listenPort = 2055;
private static void StartListener()
{
bool done = false;
UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any,listenPort);
try
{
while (!done)
{
Console.WriteLine(\"Waiting for broadcast\");
byte[] bytes = listener.Receive(ref groupEP);
Console.WriteLine(\"Received broadcast from {0} :\\n {1}\\n\",groupEP.ToString(),Encoding.ASCII.GetString(bytes,bytes.Length));
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
listener.Close();
}
}
public static int Main()
{
StartListener();
return 0;
}
}
我得到的数据是:
?M?▼? \'$▬+? ☺☺?M?▼??? k`
&?? _?07 ???? Q ?? E?U?j♥☻
♠P♣x♣►♥→♦
☼?M?▼?M?▼? 1♠►?
? ☺
提前致谢,
詹姆士
解决方法
您实际上假设接收到的数据是ASCII格式的,因此结构为:请参见此处。消息具有标题和数据集等。您需要根据标准评估数据,而不仅仅是直接的文本转换。
例如,这里是消息头格式。文本转换根本不会执行任何操作:
3.1。邮件标题格式
The format of the IPFIX Message Header is shown in Figure F.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version Number | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Export Time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Observation Domain ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+