我有一个来自MSDN网站的代码示例来创建UDP侦听器/客户端,因为我试图从防火墙接收IPFIX / Netflow数据,然后处理我收到的数据。 代码确实可以工作并开始显示数据但是它的术语(见下文)所以我想我没有正确解码它。
有没有人有任何想法,我需要做些什么才能以正确的格式获取数据?
我使用的代码是:
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, 0, 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♠►?
? ☺
提前致谢,
詹姆斯
答案 0 :(得分:1)
您假设接收到的数据是ASCII格式,实际上它的结构是See here。消息包含header and data sets等。您需要根据标准评估数据,而不仅仅是直接文本转换。
这里,例如是邮件标题格式。文本转换对此无效:
<强> 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+