|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.jnetpcap.nio.JMemory
org.jnetpcap.nio.JStruct
org.jnetpcap.winpcap.WinPcapSendQueue
public class WinPcapSendQueue
Class peered with native pcap_send_queue structure. A queue of
raw packets that will be sent to the network with
WinPcap.sendqueueTransmit(). The class peers with native C
pcap_send_queue structure and allows direct control. The structure can be
allocated using WinPcap.sendQueueAlloc method or can be directly instantiated
using one of the public constructors.
Here is an example:
WinPcapSendQueue queue = WinPcap.sendQueueAlloc(512);
PcapHeader hdr = new PcapHeader(128, 128);
byte[] pkt = new byte[128];
Arrays.fill(pkt, (byte) 255); // Broadcast
queue.queue(hdr, pkt); // Packet #1
queue.queue(hdr, pkt); // Packet #2
Arrays.fill(pkt, (byte) 0x11); // Junk packet
queue.queue(hdr, pkt); // Packet #3
r = pcap.sendQueueTransmit(queue, WinPcap.TRANSMIT_SYNCH_ASAP);
if (r != queue.getLen()) {
System.err.println(pcap.getErr());
return;
}
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class org.jnetpcap.nio.JMemory |
|---|
JMemory.Type |
| Field Summary | |
|---|---|
static int |
DEFAULT_QUEUE_SIZE
Constant used to determine the default queue size which is 64Kb (1024 * 64). |
static java.lang.String |
STRUCT_NAME
The Constant STRUCT_NAME. |
| Fields inherited from class org.jnetpcap.nio.JMemory |
|---|
JNETPCAP_LIBRARY_NAME, MAX_DIRECT_MEMORY_DEFAULT, POINTER |
| Constructor Summary | |
|---|---|
WinPcapSendQueue()
Allocates default size buffer for use as a send queue. |
|
WinPcapSendQueue(byte[] data)
Creates a sendqueue by allocating a buffer to hold the supplied data. |
|
WinPcapSendQueue(java.nio.ByteBuffer buffer)
The queue uses the supplied byte buffer which holds the buffers contents. |
|
WinPcapSendQueue(int size)
Allocates specific queue size. |
|
| Method Summary | |
|---|---|
JBuffer |
getBuffer()
Gets the buffer containing the packets to be sent. |
int |
getLen()
Gets the current size of the queue, in bytes. |
int |
getMaxLen()
Gets the maximum size of the the queue, in bytes. |
int |
incLen(int delta)
Inc len. |
int |
queue(PcapHeader header,
byte[] data)
Add a packet to a send queue. |
int |
queue(PcapHeader header,
java.nio.ByteBuffer data)
Add a packet to a send queue. |
int |
queue(PcapHeader header,
JBuffer data)
Add a packet to a send queue. |
int |
queue(PcapPktHdr hdr,
byte[] data)
Deprecated. replaced with new versions of the same method |
int |
queue(PcapPktHdr hdr,
java.nio.ByteBuffer data)
Deprecated. replaced with new versions of the same method |
void |
setLen(int len)
Sets the peered pcap_send_queue.len field which specifies the
urrent size of the queue, in bytes. |
void |
setMaxLen(int len)
Sets the max len. |
static int |
sizeof()
Returns sizeof struct pcap_send_queue. |
java.lang.String |
toDebugString()
Returns a string with detailed information about the underlying pcap_send_queue structure. |
| Methods inherited from class org.jnetpcap.nio.JStruct |
|---|
getStructName, toString |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final int DEFAULT_QUEUE_SIZE
public static final java.lang.String STRUCT_NAME
| Constructor Detail |
|---|
public WinPcapSendQueue()
public WinPcapSendQueue(byte[] data)
data - data to be copied into the queue
public WinPcapSendQueue(java.nio.ByteBuffer buffer)
throws PeeringException
The queue uses the supplied byte buffer which holds the buffers contents. The buffer must a direct buffer, array based buffers will be rejected and an exception thrown. The properties of the buffer are used as follows. The start of the buffer is always with index 0, and end of queue content at current buffer's limit property (comparible to pcap_send_queue.len). The capacity property (comparible to pcap_send_queue.maxlen) determines maximum amount of data that can be further stored in the buffer.
Note that changing properties of the buffer after creating this queue object, will have immediate effect up on the queue. You do not have to use the queue's provided methods to change the limit property. This should allow of external addition of the
buffer - a direct buffer containing the data to be send
PeeringException - the peering exceptionpublic WinPcapSendQueue(int size)
size.
size - size of the queue in bytes| Method Detail |
|---|
public static int sizeof()
public JBuffer getBuffer()
public int getLen()
public int getMaxLen()
public int incLen(int delta)
delta - the delta
public int queue(PcapHeader header,
byte[] data)
hdr points to a
PcapPktHdr structure with the timestamp and the length of the packet, data
points to a buffer with the data of the packet. The PcapPktHdr structure is
the same used by WinPcap and libpcap to store the packets in a file,
therefore sending a capture file is straightforward. 'Raw packet' means
that the sending application will have to include the protocol headers,
since every packet is sent to the network 'as is'. The CRC of the packets
needs not to be calculated, because it will be transparently added by the
network interface.
header - all fields need to be initialized as they are all useddata - Buffer containing packet data. The buffer's position and limit
properties determine the area of the buffer to be copied into the
queue. The length of the data must much what is in the header.
Also the queue has to be large enough to hold all of the data, or
an exception will be thrown.
public int queue(PcapHeader header,
java.nio.ByteBuffer data)
hdr points to a
PcapPktHdr structure with the timestamp and the length of the packet, data
points to a buffer with the data of the packet. The PcapPktHdr structure is
the same used by WinPcap and libpcap to store the packets in a file,
therefore sending a capture file is straightforward. 'Raw packet' means
that the sending application will have to include the protocol headers,
since every packet is sent to the network 'as is'. The CRC of the packets
needs not to be calculated, because it will be transparently added by the
network interface.
header - all fields need to be initialized as they are all useddata - Buffer containing packet data. The buffer's position and limit
properties determine the area of the buffer to be copied into the
queue. The length of the data must much what is in the header.
Also the queue has to be large enough to hold all of the data, or
an exception will be thrown.
public int queue(PcapHeader header,
JBuffer data)
hdr points to a
PcapPktHdr structure with the timestamp and the length of the packet, data
points to a buffer with the data of the packet. The PcapPktHdr structure is
the same used by WinPcap and libpcap to store the packets in a file,
therefore sending a capture file is straightforward. 'Raw packet' means
that the sending application will have to include the protocol headers,
since every packet is sent to the network 'as is'. The CRC of the packets
needs not to be calculated, because it will be transparently added by the
network interface.
header - all fields need to be initialized as they are all useddata - Buffer containing packet data. The buffer's position and limit
properties determine the area of the buffer to be copied into the
queue. The length of the data must much what is in the header.
Also the queue has to be large enough to hold all of the data, or
an exception will be thrown.
@Deprecated
public int queue(PcapPktHdr hdr,
byte[] data)
hdr points to a
PcapPktHdr structure with the timestamp and the length of the packet, data
points to a buffer with the data of the packet. The PcapPktHdr structure is
the same used by WinPcap and libpcap to store the packets in a file,
therefore sending a capture file is straightforward. 'Raw packet' means
that the sending application will have to include the protocol headers,
since every packet is sent to the network 'as is'. The CRC of the packets
needs not to be calculated, because it will be transparently added by the
network interface.
hdr - all fields need to be initialized as they are all useddata - Buffer containing packet data. The length of the data must much
what is in the header. Also the queue has to be large enough to
hold all of the data, or an exception will be thrown.
@Deprecated
public int queue(PcapPktHdr hdr,
java.nio.ByteBuffer data)
hdr points to a
PcapPktHdr structure with the timestamp and the length of the packet, data
points to a buffer with the data of the packet. The PcapPktHdr structure is
the same used by WinPcap and libpcap to store the packets in a file,
therefore sending a capture file is straightforward. 'Raw packet' means
that the sending application will have to include the protocol headers,
since every packet is sent to the network 'as is'. The CRC of the packets
needs not to be calculated, because it will be transparently added by the
network interface.
hdr - all fields need to be initialized as they are all useddata - Buffer containing packet data. The buffer's position and limit
properties determine the area of the buffer to be copied into the
queue. The length of the data must much what is in the header.
Also the queue has to be large enough to hold all of the data, or
an exception will be thrown.
public void setLen(int len)
pcap_send_queue.len field which specifies the
urrent size of the queue, in bytes.
len - current size of the queue, in bytespublic void setMaxLen(int len)
len - the new max lenpublic java.lang.String toDebugString()
toDebugString in class JMemoryJMemory.toDebugString()
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||