Example usage for io.netty.channel.socket DatagramPacket DatagramPacket

List of usage examples for io.netty.channel.socket DatagramPacket DatagramPacket

Introduction

In this page you can find the example usage for io.netty.channel.socket DatagramPacket DatagramPacket.

Prototype

public DatagramPacket(ByteBuf data, InetSocketAddress recipient, InetSocketAddress sender) 

Source Link

Document

Create a new instance with the specified packet data , recipient address, and sender address.

Usage

From source file:com.streamsets.pipeline.lib.udp.TestUDPMessage.java

License:Apache License

@Test
public void testMessage() {
    InetSocketAddress recipient = new InetSocketAddress("127.0.0.1", 2000);
    InetSocketAddress sender = new InetSocketAddress("127.0.0.1", 3000);
    ByteBuf buf = Mockito.mock(ByteBuf.class);
    DatagramPacket datagram = new DatagramPacket(buf, recipient, sender);
    UDPMessage message = new UDPMessage(UDPConstants.COLLECTD, 1, datagram);
    Assert.assertEquals(UDPConstants.COLLECTD, message.getType());
    Assert.assertEquals(1, message.getReceived());
    Assert.assertSame(datagram, message.getDatagram());
    Assert.assertNotNull(message.toString());
}

From source file:com.streamsets.pipeline.lib.udp.TestUDPMessageSerialization.java

License:Apache License

private static UDPMessage createUDPMessage(int size) {
    InetSocketAddress recipient = new InetSocketAddress("127.0.0.1", 2000);
    InetSocketAddress sender = new InetSocketAddress("127.0.0.1", 3000);
    byte[] arr = new byte[size];
    for (int i = 0; i < size; i++) {
        arr[i] = (byte) (i % 256);
    }//from www. j  a va  2 s.  c  o m
    ByteBuf buffer = Unpooled.wrappedBuffer(arr);
    DatagramPacket datagram = new DatagramPacket(buffer, recipient, sender);
    return new UDPMessage(UDPConstants.NETFLOW, 1, datagram);
}

From source file:com.streamsets.pipeline.lib.udp.UDPMessageDeserializer.java

License:Apache License

public UDPMessage deserialize(byte[] buffer) throws IOException {
    ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
    ObjectInputStream ois = new ObjectInputStream(bais);
    int version = ois.readInt();
    if (version == UDPConstants.UDP_MESSAGE_VERSION) {
        int type = ois.readInt();
        long received = ois.readLong();
        String address = ois.readUTF();
        int port = ois.readInt();
        InetSocketAddress sender = new InetSocketAddress(address, port);
        address = ois.readUTF();/*from   w w  w  . ja v a2s.  c  o m*/
        port = ois.readInt();
        InetSocketAddress receiver = new InetSocketAddress(address, port);
        int dataLen = ois.readInt();
        byte[] data = new byte[dataLen];
        ois.readFully(data);
        ois.close();
        ByteBuf byteBuf = Unpooled.wrappedBuffer(data);
        DatagramPacket datagram = new DatagramPacket(byteBuf, receiver, sender);
        return new UDPMessage(type, received, datagram);
    } else {
        throw new IOException(Utils.format("Unsupported version '{}'", version));
    }
}

From source file:com.streamsets.pipeline.lib.util.UDPTestUtil.java

License:Apache License

public static byte[] getUDPData(int type, byte[] data) throws IOException {
    InetSocketAddress recipient = new InetSocketAddress("127.0.0.1", 2000);
    InetSocketAddress sender = new InetSocketAddress("127.0.0.1", 3000);
    ByteBuf buffer = Unpooled.wrappedBuffer(data);
    DatagramPacket datagram = new DatagramPacket(buffer, recipient, sender);
    UDPMessage message = new UDPMessage(type, 1, datagram);
    UDPMessageSerializer serializer = new UDPMessageSerializer();
    return serializer.serialize(message);
}

From source file:com.streamsets.pipeline.stage.origin.udptokafka.TestKafkaUDPConsumer.java

License:Apache License

private static DatagramPacket createDatagramPackage(int size) {
    InetSocketAddress recipient = new InetSocketAddress("127.0.0.1", 2000);
    InetSocketAddress sender = new InetSocketAddress("127.0.0.1", 3000);
    byte[] arr = new byte[size];
    for (int i = 0; i < size; i++) {
        arr[i] = (byte) (i % 256);
    }//from  www . j  a va  2s  .c  o m
    ByteBuf buffer = Unpooled.wrappedBuffer(arr);
    return new DatagramPacket(buffer, recipient, sender);
}

From source file:com.whizzosoftware.hobson.ssdp.SSDPPlugin.java

License:Open Source License

public void sendDiscoveryPacket() {
    try {//from  w w w. j  a v a2  s  . c om
        if (localChannel != null) {
            logger.debug("Sending SSDP discovery packet");
            byte[] disco = SSDPPacket.createSearchRequest().toString().getBytes();
            ByteBuf buf = Unpooled.copiedBuffer(disco);
            localChannel.writeAndFlush(new DatagramPacket(buf, groupAddress, localAddress)).sync();
        }
    } catch (Throwable e) {
        e.printStackTrace();
    }
}

From source file:com.whizzosoftware.hobson.ssdp.SSDPPlugin.java

License:Open Source License

public void sendDiscoveryResponse(InetSocketAddress address, DeviceAdvertisement da) throws IOException {
    try {//from  w  w  w  .j  a  v  a  2 s . c om
        if (localChannel != null) {
            String data = SSDPPacket.createSearchResponse(da.getUri(), da.getId(), "urn").toString();
            logger.trace("Sending SSDP search response to {}: {}", address, data);
            ByteBuf buf = Unpooled.copiedBuffer(data.getBytes());
            localChannel.writeAndFlush(new DatagramPacket(buf, address, localAddress)).sync();
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

From source file:dorkbox.network.pipeline.discovery.BroadcastServer.java

License:Apache License

/**
 * @return true if the broadcast was responded to, false if it was not a broadcast (and there was no response)
 *//*  ww  w.j a  va  2 s.  c  o m*/
public boolean isDiscoveryRequest(final Channel channel, ByteBuf byteBuf, final InetSocketAddress localAddress,
        InetSocketAddress remoteAddress) {
    if (byteBuf.readableBytes() == 1) {
        // this is a BROADCAST discovery event. Don't read the byte unless it is...
        if (byteBuf.getByte(0) == MagicBytes.broadcastID) {
            byteBuf.readByte(); // read the byte to consume it (now that we verified it is a broadcast byte)

            // absolutely MUST send packet > 0 across, otherwise netty will think it failed to write to the socket, and keep trying.
            // (this bug was fixed by netty, however we are keeping this code)
            ByteBuf directBuffer = channel.alloc().ioBuffer(bufferSize);
            directBuffer.writeByte(MagicBytes.broadcastResponseID);

            // now output the port information for TCP/UDP so the broadcast client knows which port to connect to
            // either it will be TCP or UDP, or BOTH

            int enabledFlag = 0;
            if (tcpPort > 0) {
                enabledFlag |= MagicBytes.HAS_TCP;
            }

            if (udpPort > 0) {
                enabledFlag |= MagicBytes.HAS_UDP;
            }

            directBuffer.writeByte(enabledFlag);

            // TCP is always first
            if (tcpPort > 0) {
                directBuffer.writeShort(tcpPort);
            }

            if (udpPort > 0) {
                directBuffer.writeShort(udpPort);
            }

            channel.writeAndFlush(new DatagramPacket(directBuffer, remoteAddress, localAddress));

            logger.info("Responded to host discovery from [{}]", EndPoint.getHostDetails(remoteAddress));

            byteBuf.release();
            return true;
        }
    }

    return false;
}

From source file:org.codice.alliance.video.stream.mpegts.netty.RawUdpDataToMTSPacketDecoderTest.java

License:Open Source License

/**
 * Split an array of bytes into datagram packets.
 *
 * @param bytes payload data//  ww w.jav a  2 s .c  o  m
 * @return list of datagrams
 */
private List<DatagramPacket> toDatagrams(byte[] bytes) throws UnknownHostException {

    int datagramSize = 1500;

    List<DatagramPacket> datagrams = new LinkedList<>();

    byte[] tmp = bytes;

    while (tmp.length > datagramSize) {
        byte[] subarray = ArrayUtils.subarray(tmp, 0, datagramSize);
        datagrams.add(new DatagramPacket(Unpooled.wrappedBuffer(subarray), null,
                new InetSocketAddress(InetAddress.getLocalHost(), 50000)));
        tmp = ArrayUtils.subarray(tmp, datagramSize, tmp.length);
    }

    if (tmp.length > 0) {
        datagrams.add(new DatagramPacket(Unpooled.wrappedBuffer(tmp), null,
                new InetSocketAddress(InetAddress.getLocalHost(), 50000)));
    }

    return datagrams;
}

From source file:org.opendaylight.capwap.dtls.DtlsEngine.java

License:Open Source License

public ArrayList<DatagramPacket> read(DatagramPacket msg)
        throws InterruptedException, ExecutionException, IOException {

    log.trace("DtlsEngine read " + msg);
    // add to queue irrespective of whether initialized or not;
    // this way the protocol handshake can retrieve them
    rawTransport.enqueue(msg);//from   ww  w. j av  a 2s . c  o m

    ArrayList<DatagramPacket> packets = new ArrayList<>();
    if (encTransport != null) {
        byte buf[] = new byte[encTransport.getReceiveLimit()];
        while (rawTransport.hasPackets()) {
            log.trace("before enctransport receive");
            int bytesRead = encTransport.receive(buf, 0, buf.length, 100);
            log.trace("after enctransport receive");
            if (bytesRead > 0) {
                packets.add(new DatagramPacket(Unpooled.copiedBuffer(buf, 0, bytesRead), null,
                        rawTransport.getRemoteAddress()));
            }
        }
    }
    return packets;
}