私が持っている仮想マシンからファイアウォール (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();
}
コードは正常に動作しています。私の問題は、データベースに保存されたコンテンツを表示しようとすると、奇妙な文字がたくさんあることです。これはバイナリ (だと思います) であるため、必要な情報を取得するために読み取ることができません。 (フロー レコード形式、ここで表示できます)
私のテーブルは非常に単純です。コード (int、自動インクリメント) の 2 つの列と、fluxo (varbinary(10000)) の列があります。これは、MySQL Workbench で「エディターで値を開く」をクリックすると表示されるものです。 パケット コンテンツ