【问题标题】:Java library for Raw Ethernet [closed]用于原始以太网的 Java 库 [关闭]
【发布时间】:2010-08-26 10:05:34
【问题描述】:

我正在寻找一个 Java 库,它可以让我访问原始以太网帧,用于读取和发送它们。我的最终目标是创建一个 BACnet 以太网网络扫描仪。

请注意,我不是在寻找 TCP\IP。

任何人都知道这样做的好图书馆吗?

【问题讨论】:

    标签: java ethernet raw-ethernet


    【解决方案1】:

    也许Jpcap 可以提供帮助。请注意,有一个同名的 Sourceforge 项目,但它似乎不是同一个项目。

    这里有一些使用 Jpcap 发送 TCP 数据包和以太网帧的示例代码(来自库的教程):

    编辑:示例代码确实创建了一个TCPPacket,但您可以创建一个常规的Packet

    //open a network interface to send a packet to
    JpcapSender sender=JpcapSender.openDevice(devices[index]);
    
    //create a TCP packet with specified port numbers, flags, and other parameters
    TCPPacket p=new TCPPacket(12,34,56,78,false,false,false,false,true,true,true,true,10,10);
    
    //specify IPv4 header parameters
    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"));
    
    //set the data field of the packet
    p.data=("data").getBytes();
    
    //create an Ethernet packet (frame)
    EthernetPacket ether=new EthernetPacket();
    //set frame type as IP
    ether.frametype=EthernetPacket.ETHERTYPE_IP;
    //set source and destination MAC addresses
    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};
    
    //set the datalink frame of the packet p as ether
    p.datalink=ether;
    
    //send the packet p
    sender.sendPacket(p);
    
    sender.close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-27
      • 2011-09-30
      • 2010-10-20
      • 2018-12-13
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 2021-07-27
      相关资源
      最近更新 更多