2

jpcap を使用して、さまざまなデータ ペイロードを pcap ダンプ ファイルに書き込むための小さなユーティリティを作成しています。ペイロードごとに、「ネットワーク インターフェイス経由でパケットを送信する」の例で説明されているようにパケットを作成し、送信します。

            byte[] data = new byte[messageLengthRead];
            long secs;  // initialized to a legit value based on other code

    TCPPacket p = new TCPPacket(12, 34, 56, 78, false, false, false, false,
            true, true, true, true, 10, 10);
    p.setIPv4Parameter(0, false, false, false, 0, false, false, false, 0,
            1010101, 100, IPPacket.IPPROTO_TCP, InetAddress
                    .getByName("www.microsoft.com"), InetAddress
                    .getByName("www.google.com"));
    p.data = data;
            p.len = data.length;
            p.sec = secs;
    EthernetPacket ether = new EthernetPacket();
    ether.frametype = EthernetPacket.ETHERTYPE_IP;
    ether.src_mac = new byte[] { (byte) 0, (byte) 1, (byte) 2, (byte) 3, (byte) 4, (byte) 5 };
    ether.dst_mac = new byte[] { (byte) 0, (byte) 6, (byte) 7, (byte) 8, (byte) 9, (byte) 10 };
    p.datalink = ether;
    writer.writePacket(p);

試したデータ ペイロードに関係なく、writePacket の結果は次のようになります (null、""、" ")。

#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d7cfc0e, pid=6748, tid=4260
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_22-b03 mixed mode)
# Problematic frame:
# V  [jvm.dll+0x8fc0e]
#
# An error report file with more information is saved as hs_err_pid6748.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# 

質問:

  1. 新しく構築したパケットのダンプへの書き込みはjpcapでサポートされていますか? キャプチャされたパケットに基づいてダンプを書き込み、ネットワーク インターフェイスを介して新しく構築されたパケットを送信する例があります。
  2. エラーをトラブルシューティングするための手順は何ですか。
4

1 に答える 1

0

同じコードが私にとってはうまく機能しています。私も試してみましたが、エラーは発生していません。

于 2012-04-04T11:19:13.357 に答える