public void nextTuple() { // TODO Auto-generated method stub try { if (sampLen < 0) sampLen = 65535; while (true) { Packet packet = captor.getPacket(); // if some error occurred or EOF has reached, break the loop if (packet == null) { System.out.println("null"); break; } // otherwise, print out the packet IPPacket ip = (IPPacket) packet; countPacket++; this.outputCollector.emit(createValues(ip)); // this.outputCollector.ack(tuple); } } catch (Exception e) { } }
public static String median() throws IOException { int m = 0, n = 0, i = 0; int baochang[] = new int[3858]; JpcapCaptor captor = JpcapCaptor.openFile("./data/tcpudptest.pcap"); while (true) { Packet packet = captor.getPacket(); if (packet == null || packet == Packet.EOF) break; if (packet instanceof jpcap.packet.TCPPacket || packet instanceof jpcap.packet.UDPPacket) { baochang[i] = packet.len; i++; } } boolean exchage = true; int j, k, l; for (j = 0; j < 3858; j++) { exchage = false; // 两两比较,找出每趟最小数据元素 for (k = 3857; k > j; k--) { // 将最小数据元素前移 if (baochang[k - 1] > baochang[k]) { l = baochang[k - 1]; baochang[k - 1] = baochang[k]; baochang[k] = l; exchage = true; } } } if (!exchage) { m = baochang[1928]; n = baochang[1929]; } String median = m + "/" + n; return median; }
public static byte[] arp(InetAddress ip) throws java.io.IOException { // find network interface NetworkInterface[] devices = JpcapCaptor.getDeviceList(); NetworkInterface device = null; loop: for (NetworkInterface d : devices) { for (NetworkInterfaceAddress addr : d.addresses) { if (!(addr.address instanceof Inet4Address)) continue; byte[] bip = ip.getAddress(); byte[] subnet = addr.subnet.getAddress(); byte[] bif = addr.address.getAddress(); for (int i = 0; i < 4; i++) { bip[i] = (byte) (bip[i] & subnet[i]); bif[i] = (byte) (bif[i] & subnet[i]); } if (Arrays.equals(bip, bif)) { device = d; break loop; } } } if (device == null) throw new IllegalArgumentException(ip + " is not a local address"); // open Jpcap JpcapCaptor captor = JpcapCaptor.openDevice(device, 2000, false, 3000); captor.setFilter("arp", true); JpcapSender sender = captor.getJpcapSenderInstance(); InetAddress srcip = null; for (NetworkInterfaceAddress addr : device.addresses) if (addr.address instanceof Inet4Address) { srcip = addr.address; break; } byte[] broadcast = new byte[] {(byte) 255, (byte) 255, (byte) 255, (byte) 255, (byte) 255, (byte) 255}; ARPPacket arp = new ARPPacket(); arp.hardtype = ARPPacket.HARDTYPE_ETHER; arp.prototype = ARPPacket.PROTOTYPE_IP; arp.operation = ARPPacket.ARP_REQUEST; arp.hlen = 6; arp.plen = 4; arp.sender_hardaddr = device.mac_address; arp.sender_protoaddr = srcip.getAddress(); arp.target_hardaddr = broadcast; arp.target_protoaddr = ip.getAddress(); EthernetPacket ether = new EthernetPacket(); ether.frametype = EthernetPacket.ETHERTYPE_ARP; ether.src_mac = device.mac_address; ether.dst_mac = broadcast; arp.datalink = ether; sender.sendPacket(arp); while (true) { ARPPacket p = (ARPPacket) captor.getPacket(); if (p == null) { throw new IllegalArgumentException(ip + " is not a local address"); } if (Arrays.equals(p.target_protoaddr, srcip.getAddress())) { return p.sender_hardaddr; } } }