Я разрабатываю программное обеспечение, которое перехватывает каждый пакет udp, проходящий через мой брандмауэр (виртуальная машина 5.4 OpenBSD) с виртуальной машины, которая у меня есть, и сохраняет пакет в базе данных 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: Содержимое пакета