我正在开发一个软件,它从我拥有的虚拟机中捕获通过我的防火墙(5.4 OpenBSD 虚拟机)的每个 udp 数据包,并将数据包保存在 MySQL 数据库中。
我的代码基本上是:
try
{
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte [1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
InetAddress IPAddress = receivePacket.getAddress();
Connection conn = DriverManager.getConnection(url, user, password);
String sql = "INSERT INTO tabela_netflow (fluxo) values (?)";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setBytes(1,receivePacket.getData());
int row = statement.executeUpdate();
if (row > 0)
{
System.out.println("Packet saved:" +receivePacket.getData());
}
} catch (SQLException ex)
{
ex.printStackTrace();
}
代码工作得很好,我的问题是当我尝试查看保存在数据库中的内容时,有很多奇怪的字符,因为它是二进制的(我认为),我无法读取它来获取我需要的信息(流量记录格式,可以在这里查看)
我的表很简单:有 2 列,代码(int,自动增量)和另一列,fluxo(varbinary(10000))。这是我在 MySQL Workbench 上单击“在编辑器中打开值”时看到的内容: 数据包内容