IP Multicast: UDP Packet size!

Hi,
          Does anyone know what is the size of the UDP packets which WLS
          allocates to receive broadcast messages in a clsutered enviroment. I am
          running into issues as we have a limitation on JVM/platform combination,
          where we can have message size of only 32K be allocated for UDP packets
          ?? Is ther eany way to configure WLS to use smaller packet sizes?
          TIA,
          Sam
          

WLS uses 32 K. UDP packets by default. So, you should not have any problems
          on our certified platforms.
          Are you by any chance trying to run the server on Tandem?
          Thanks,
          Michael
          Michael Girdley
          WLS Product Manager
          Sam <[email protected]> wrote in message
          news:[email protected]..
          > Hi,
          >
          > Does anyone know what is the size of the UDP packets which WLS
          > allocates to receive broadcast messages in a clsutered enviroment. I am
          > running into issues as we have a limitation on JVM/platform combination,
          > where we can have message size of only 32K be allocated for UDP packets
          > ?? Is ther eany way to configure WLS to use smaller packet sizes?
          >
          > TIA,
          >
          > Sam
          >
          

Similar Messages

  • DNS  after reducing the advertised EDNS UDP packet size to 512 octets

    hello
    There is something wrong with my DNS server, it open internet webs so slow,and i have no idea with this .
    04-Mar-2011 14:31:57.264 zone 0.0.127.in-addr.arpa/IN/com.apple.ServerAdmin.DNS.public: loaded serial 1997022700
    04-Mar-2011 14:31:57.264 zone 15.0.168.192.in-addr.arpa/IN/com.apple.ServerAdmin.DNS.public: loaded serial 2011030204
    04-Mar-2011 14:31:57.265 zone ******/IN/com.apple.ServerAdmin.DNS.public: loaded serial 2011030404
    04-Mar-2011 14:31:57.265 zone localhost/IN/com.apple.ServerAdmin.DNS.public: loaded serial 42
    04-Mar-2011 14:31:57.265 running
    04-Mar-2011 14:32:00.066 host unreachable resolving 'b.dns-sd.udp.0.0.168.192.in-addr.arpa/PTR/IN': 2001:7fd::1#53
    04-Mar-2011 14:32:00.261 host unreachable resolving 'r.dns-sd.udp.0.0.168.192.in-addr.arpa/PTR/IN': 2001:500:2f::f#53
    04-Mar-2011 14:32:00.261 host unreachable resolving 'r.dns-sd.udp.0.0.168.192.in-addr.arpa/PTR/IN': 2001:503:c27::2:30#53
    04-Mar-2011 14:32:00.261 host unreachable resolving 'r.dns-sd.udp.0.0.168.192.in-addr.arpa/PTR/IN': 2001:503:ba3e::2:30#53
    04-Mar-2011 14:32:00.261 host unreachable resolving 'r.dns-sd.udp.0.0.168.192.in-addr.arpa/PTR/IN': 2001:7fd::1#53
    04-Mar-2011 14:32:00.261 host unreachable resolving 'r.dns-sd.udp.0.0.168.192.in-addr.arpa/PTR/IN': 2001:dc3::35#53
    04-Mar-2011 14:32:00.361 host unreachable resolving 'dr.dns-sd.udp.0.0.168.192.in-addr.arpa/PTR/IN': 2001:500:1::803f:235#53
    04-Mar-2011 14:32:00.361 host unreachable resolving 'dr.dns-sd.udp.0.0.168.192.in-addr.arpa/PTR/IN': 2001:7fd::1#53
    04-Mar-2011 14:32:00.361 host unreachable resolving 'dr.dns-sd.udp.0.0.168.192.in-addr.arpa/PTR/IN': 2001:dc3::35#53
    04-Mar-2011 14:32:00.361 host unreachable resolving 'dr.dns-sd.udp.0.0.168.192.in-addr.arpa/PTR/IN': 2001:503:ba3e::2:30#53
    04-Mar-2011 14:32:00.866 host unreachable resolving './NS/IN': 2001:7fd::1#53
    04-Mar-2011 14:32:01.005 success resolving './NS' (in '.'?) after reducing the advertised EDNS UDP packet size to 512 octets
    04-Mar-2011 14:32:01.408 success resolving 'local/SOA' (in '.'?) after disabling EDNS
    04-Mar-2011 14:32:01.533 host unreachable resolving 't.arin.net/AAAA/IN': 2001:503:ba3e::2:30#53
    04-Mar-2011 14:32:01.534 host unreachable resolving 'v.arin.net/AAAA/IN': 2001:500:1::803f:235#53
    04-Mar-2011 14:32:01.534 host unreachable resolving 'v.arin.net/AAAA/IN': 2001:7fd::1#53
    04-Mar-2011 14:32:01.534 host unreachable resolving 'v.arin.net/AAAA/IN': 2001:503:ba3e::2:30#53
    04-Mar-2011 14:32:01.534 host unreachable resolving 'w.arin.net/A/IN': 2001:500:1::803f:235#53
    anyone help!! Thanks a lot.
    Message was edited by: leo.xue

    also interesting, when setting DNS servers IPs in Network Settings for your host,
    it is important that the IPs are not doubled.
    in example if you have Networksettings like
    automatic DHCP given from router or server.
    IP-Adress: 192.168.2.2
    Subnetmask: 255.255.255.0
    Router IP: 192.168.2.1
    DNS-Server: 127.0.0.1, 192.168.2.2
    wich means localhost and again same machine, just different IP..
    then your lookup mechanism has to walk thru this steps to know if there is nothing inside to resolve adresses.
    which means in this example it would take double the time if DNS-Server would be just 127.0.0.1
    you can see if there is a lot to work thru in your logs.
    look for something like "sizing zone task pool based on 9 zones".
    this mount of zones will change if you set the correct DNS server IP.
    more zones are slower than less, very logical!
    but this will not solve your problem with packet size at all, it just reduces circles after dns resolves not known adresses even with packet size change.

  • How can i attach a user-speci​fied header to each UDP packet?

    Hello,
    i have here a question about UDP:
    i want to stream live-videos using UDP. To avoid/observe some possible problems that could occur (e.g. wrong packet-order, packet loss etc.) i am planning to add a header to each UDP packet with e.g. frame-nr. , frame-size, packet-nr...
    Question:
    1. (How) Can i control the UDP packet size in LabVIEW?
    2. If possible, how can i add a user specified header to each/certain (e.g. the first or the last packet of the frame) packet?
    Thanks!
    WLAN
    Message Edited by wlan on 01-26-2007 03:02 AM

    WLAN,
    i just copied the help regarding the max size-terminal from the LV-help:
    "max size is the maximum number of bytes to read. The default is 548. Windows If you wire a value other than 548 to this input, Windows might return an error because the function cannot read fewer bytes than are in a packet"
    So, please do not change this value....
    UDP creates packets from the data you transmitt. Each packet in Windows should have a size of 548 bytes or less. So this should read one whole packet at a time.... Decreasing this could lead to problems if the packet is larger.... Increasing this value changes nothing since the packets themselfs do not get larger only by trying to read more bytes..... Since you cannot alter the packetsize from LV, you shouldnt bother about that anymore.
    And to add (again): UDP does not garantuee ANY correct transission. So you will never get any note if the first packet of a frame was lost. If you need some kind of garantuee for this, you have to use TCP (btw. infact, the TCP header uses 192 bytes, containing the infos like seen in the attached gif).
    regards,
    NorbertMessage Edited by Norbert B on 01-31-2007 11:12 AM
    CEO: What exactly is stopping us from doing this?
    Expert: Geometry
    Marketing Manager: Just ignore it.
    Attachments:
    tcp_header.gif ‏9 KB

  • Increase UDP sending size over 64k bytes and get error -113,sending buffer not enough

    Dear all,
    I have a case that I must send a data over 64k bytes in a socket with UDP . I got a error-113 shows "A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram was smaller than the datagram itself.".I searched for this issue and got the closest answer as below:
    http://digital.ni.com/public.nsf/allkb/D5AC7E8AE545322D8625730100604F2D?OpenDocument
    It said I have to change buffer size with Wsock.dll. I used the same mathod to increaes the send buffer to 131072 bytes by choice optionname to so_sndbuf (x1001) and give it value with 131072 and it worked fine without error. However I still got an error 113 while sending data with " UDP Write.vi ". It seems UDP write.vi reset the buffer size? Are there any other things cause the error?
    I attached example code. In UDP Sender.vi you can see I change send buffer size to 131072 and send date included a 65536 bytes data.There is also a UDP receiver.vi and there is some missing VI which you can get from the LINK. But it's not necessary.
    Attachments:
    UDP Sender.vi ‏14 KB
    UDP Receiver.vi ‏16 KB
    UDP_set_send_buffer.vi ‏16 KB

    The header for a UDP packet includes a 16 bit field that defines the size of the UDP message (HEADER AND DATA)
    16 bits limits you to a total size of 65635 bytes, minus the header sizes; a minimum of 20 bytes are required to define an IP packet and 8 bytes for UDP leaving an effective data payload of 65507
     bytes.
    LabVIEW is not the issue...
    http://en.wikipedia.org/wiki/User_Datagram_Protocol#Packet_structure
    Now is the right time to use %^<%Y-%m-%dT%H:%M:%S%3uZ>T
    If you don't hate time zones, you're not a real programmer.
    "You are what you don't automate"
    Inplaceness is synonymous with insidiousness

  • JMF How to stream rtp from udp packet

    I implemented an rtsp client and use the client to setup two rtp session(audio, vedio). But when I use the example pramgram "AVReceive3" to stream the udp packet, it doesn't work.
    When the AVReceive3 receive the udp packet from the rtp port, it will call the update(ReceiveStreamEvent evt) function, and the event type is StreamMappedEvent, and the call to evt.getReceiveStream().getDataSource() return null.
    I thought the first event should be NewReceiveStreamEvent. Please help to solve the problem.
    What's rtp packet will cause the event StreamMappedEvent.
    Following is the code of AVReceive3.java:
    * AVReceive3.java
    * Created on 2007&#24180;10&#26376;30&#26085;, &#19979;&#21320;4:11
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    package PlayerTest;
    import java.io.*;
    import java.awt.*;
    import java.net.*;
    import java.awt.event.*;
    import java.util.Vector;
    import javax.media.*;
    import javax.media.rtp.*;
    import javax.media.rtp.event.*;
    import javax.media.rtp.rtcp.*;
    import javax.media.protocol.*;
    import javax.media.protocol.DataSource;
    import javax.media.format.AudioFormat;
    import javax.media.format.VideoFormat;
    import javax.media.Format;
    import javax.media.format.FormatChangeEvent;
    import javax.media.control.BufferControl;
    * AVReceive3 to receive RTP transmission using the RTPConnector.
    public class AVReceive3 extends Thread implements ReceiveStreamListener, SessionListener,
    ControllerListener
    String sessions[] = null;
    RTPManager mgrs[] = null;
    Vector playerWindows = null;
    boolean dataReceived = false;
    Object dataSync = new Object();
    public AVReceive3(String sessions[])
    this.sessions = sessions;
    public void run()
    initialize();
    public boolean initialize() {
    try {
    mgrs = new RTPManager[sessions.length];
    playerWindows = new Vector();
    SessionLabel session;
    // Open the RTP sessions.
    for (int i = 0; i < sessions.length; i++) {
    // Parse the session addresses.
    try {
    session = new SessionLabel(sessions);
    } catch (IllegalArgumentException e) {
    System.err.println("Failed to parse the session address given: " + sessions[i]);
    return false;
    System.err.println(" - Open RTP session for: addr: " + session.addr + " port: " + session.port + " ttl: " + session.ttl);
    mgrs[i] = (RTPManager) RTPManager.newInstance();
    mgrs[i].addSessionListener(this);
    mgrs[i].addReceiveStreamListener(this);
    // Initialize the RTPManager with the RTPSocketAdapter
    mgrs[i].initialize(new RTPSocketAdapter(
    InetAddress.getByName(session.addr),
    session.port, session.ttl));
    // You can try out some other buffer size to see
    // if you can get better smoothness.
    BufferControl bc = (BufferControl)mgrs[i].getControl("javax.media.control.BufferControl");
    if (bc != null)
    bc.setBufferLength(350);
    } catch (Exception e){
    System.err.println("Cannot create the RTP Session: " + e.getMessage());
    return false;
    // Wait for data to arrive before moving on.
    long then = System.currentTimeMillis();
    long waitingPeriod = 30000; // wait for a maximum of 30 secs.
    try{
    synchronized (dataSync) {
    while (!dataReceived &&
    System.currentTimeMillis() - then < waitingPeriod) {
    if (!dataReceived)
    System.err.println(" - Waiting for RTP data to arrive");
    dataSync.wait(1000);
    } catch (Exception e) {}
    if (!dataReceived) {
    System.err.println("No RTP data was received.");
    close();
    return false;
    return true;
    public boolean isDone() {
    return playerWindows.size() == 0;
    * Close the players and the session managers.
    protected void close() {
    for (int i = 0; i < playerWindows.size(); i++) {
    try {
    ((PlayerWindow)playerWindows.elementAt(i)).close();
    } catch (Exception e) {}
    playerWindows.removeAllElements();
    // close the RTP session.
    for (int i = 0; i < mgrs.length; i++) {
    if (mgrs[i] != null) {
    mgrs[i].removeTargets( "Closing session from AVReceive3");
    mgrs[i].dispose();
    mgrs[i] = null;
    PlayerWindow find(Player p) {
    for (int i = 0; i < playerWindows.size(); i++) {
    PlayerWindow pw = (PlayerWindow)playerWindows.elementAt(i);
    if (pw.player == p)
    return pw;
    return null;
    PlayerWindow find(ReceiveStream strm) {
    for (int i = 0; i < playerWindows.size(); i++) {
    PlayerWindow pw = (PlayerWindow)playerWindows.elementAt(i);
    if (pw.stream == strm)
    return pw;
    return null;
    * SessionListener.
    public synchronized void update(SessionEvent evt) {
    if (evt instanceof NewParticipantEvent) {
    Participant p = ((NewParticipantEvent)evt).getParticipant();
    System.err.println(" - A new participant had just joined: " + p.getCNAME());
    * ReceiveStreamListener
    public synchronized void update( ReceiveStreamEvent evt) {
    System.out.println("\nReceive an receiveStreamEvent:"+evt.toString());
    RTPManager mgr = (RTPManager)evt.getSource();
    Participant participant = evt.getParticipant(); // could be null.
    ReceiveStream stream = evt.getReceiveStream(); // could be null.
    System.out.println("The RTPManager is:");
    if (evt instanceof RemotePayloadChangeEvent) {
    System.err.println(" - Received an RTP PayloadChangeEvent.");
    System.err.println("Sorry, cannot handle payload change.");
    System.exit(0);
    else if (evt instanceof NewReceiveStreamEvent) {
    try {
    stream = ((NewReceiveStreamEvent)evt).getReceiveStream();
    DataSource ds = stream.getDataSource();
    // Find out the formats.
    RTPControl ctl = (RTPControl)ds.getControl("javax.media.rtp.RTPControl");
    if (ctl != null){
    System.err.println(" - Recevied new RTP stream: " + ctl.getFormat());
    } else
    System.err.println(" - Recevied new RTP stream");
    if (participant == null)
    System.err.println(" The sender of this stream had yet to be identified.");
    else {
    System.err.println(" The stream comes from: " + participant.getCNAME());
    // create a player by passing datasource to the Media Manager
    Player p = javax.media.Manager.createPlayer(ds);
    if (p == null)
    return;
    p.addControllerListener(this);
    p.realize();
    PlayerWindow pw = new PlayerWindow(p, stream);
    playerWindows.addElement(pw);
    pw.setVisible(true);
    // Notify intialize() that a new stream had arrived.
    synchronized (dataSync) {
    dataReceived = true;
    dataSync.notifyAll();
    } catch (Exception e) {
    System.err.println("NewReceiveStreamEvent exception " + e.getMessage());
    return;
    else if (evt instanceof StreamMappedEvent) {
    if (stream != null)
    if(stream.getDataSource()!=null)
    DataSource ds = stream.getDataSource();
    // Find out the formats.
    RTPControl ctl = (RTPControl)ds.getControl("javax.media.rtp.RTPControl");
    System.err.println(" - The previously unidentified stream ");
    if (ctl != null)
    System.err.println(" " + ctl.getFormat());
    System.err.println(" had now been identified as sent by: " + participant.getCNAME());
    else if (evt instanceof ByeEvent) {
    System.err.println(" - Got \"bye\" from: " + participant.getCNAME());
    PlayerWindow pw = find(stream);
    if (pw != null) {
    pw.close();
    playerWindows.removeElement(pw);
    * ControllerListener for the Players.
    public synchronized void controllerUpdate(ControllerEvent ce) {
    Player p = (Player)ce.getSourceController();
    if (p == null)
    return;
    // Get this when the internal players are realized.
    if (ce instanceof RealizeCompleteEvent) {
    PlayerWindow pw = find(p);
    if (pw == null) {
    // Some strange happened.
    System.err.println("Internal error!");
    System.exit(-1);
    pw.initialize();
    pw.setVisible(true);
    p.start();
    if (ce instanceof ControllerErrorEvent) {
    p.removeControllerListener(this);
    PlayerWindow pw = find(p);
    if (pw != null) {
    pw.close();
    playerWindows.removeElement(pw);
    System.err.println("AVReceive3 internal error: " + ce);
    * A utility class to parse the session addresses.
    class SessionLabel {
    public String addr = null;
    public int port;
    public int ttl = 1;
    SessionLabel(String session) throws IllegalArgumentException {
    int off;
    String portStr = null, ttlStr = null;
    if (session != null && session.length() > 0) {
    while (session.length() > 1 && session.charAt(0) == '/')
    session = session.substring(1);
    // Now see if there's a addr specified.
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    addr = session;
    } else {
    addr = session.substring(0, off);
    session = session.substring(off + 1);
    // Now see if there's a port specified
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    portStr = session;
    } else {
    portStr = session.substring(0, off);
    session = session.substring(off + 1);
    // Now see if there's a ttl specified
    off = session.indexOf('/');
    if (off == -1) {
    if (!session.equals(""))
    ttlStr = session;
    } else {
    ttlStr = session.substring(0, off);
    if (addr == null)
    throw new IllegalArgumentException();
    if (portStr != null) {
    try {
    Integer integer = Integer.valueOf(portStr);
    if (integer != null)
    port = integer.intValue();
    } catch (Throwable t) {
    throw new IllegalArgumentException();
    } else
    throw new IllegalArgumentException();
    if (ttlStr != null) {
    try {
    Integer integer = Integer.valueOf(ttlStr);
    if (integer != null)
    ttl = integer.intValue();
    } catch (Throwable t) {
    throw new IllegalArgumentException();
    * GUI classes for the Player.
    class PlayerWindow extends Frame {
    Player player;
    ReceiveStream stream;
    PlayerWindow(Player p, ReceiveStream strm) {
    player = p;
    stream = strm;
    public void initialize() {
    add(new PlayerPanel(player));
    public void close() {
    player.close();
    setVisible(false);
    dispose();
    public void addNotify() {
    super.addNotify();
    pack();
    * GUI classes for the Player.
    class PlayerPanel extends Panel {
    Component vc, cc;
    PlayerPanel(Player p) {
    setLayout(new BorderLayout());
    if ((vc = p.getVisualComponent()) != null)
    add("Center", vc);
    if ((cc = p.getControlPanelComponent()) != null)
    add("South", cc);
    public Dimension getPreferredSize() {
    int w = 0, h = 0;
    if (vc != null) {
    Dimension size = vc.getPreferredSize();
    w = size.width;
    h = size.height;
    if (cc != null) {
    Dimension size = cc.getPreferredSize();
    if (w == 0)
    w = size.width;
    h += size.height;
    if (w < 160)
    w = 160;
    return new Dimension(w, h);
    public static void main(String argv[]) {
    //if (argv.length == 0)
    // prUsage();
    String sessions[]= new String[] {"127.0.0.1/6670","127.0.0.1/6672"};
    AVReceive3 avReceive = new AVReceive3(sessions);
    if (!avReceive.initialize()) {
    System.err.println("Failed to initialize the sessions.");
    System.exit(-1);
    // Check to see if AVReceive3 is done.
    try {
    while (!avReceive.isDone())
    Thread.sleep(1000);
    } catch (Exception e) {}
    System.err.println("Exiting AVReceive3");
    static void prUsage() {
    System.err.println("Usage: AVReceive3 <session> <session> ");
    System.err.println(" <session>: <address>/<port>/<ttl>");
    System.exit(0);
    }// end of AVReceive3
    Following is the code of RTPSocketAdapter.java:
    * RTPSocketAdapter.java
    * Created on 2007&#24180;10&#26376;30&#26085;, &#19979;&#21320;4:13
    * To change this template, choose Tools | Template Manager
    * and open the template in the editor.
    package PlayerTest;
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.DatagramSocket;
    import java.net.MulticastSocket;
    import java.net.DatagramPacket;
    import java.net.SocketException;
    import javax.media.protocol.DataSource;
    import javax.media.protocol.PushSourceStream;
    import javax.media.protocol.ContentDescriptor;
    import javax.media.protocol.SourceTransferHandler;
    import javax.media.rtp.RTPConnector;
    import javax.media.rtp.OutputDataStream;
    * An implementation of RTPConnector based on UDP sockets.
    public class RTPSocketAdapter implements RTPConnector {
    DatagramSocket dataSock;
    DatagramSocket ctrlSock;
    InetAddress addr;
    int port;
    SockInputStream dataInStrm = null;
    SockInputStream ctrlInStrm = null;
    SockOutputStream dataOutStrm = null;
    SockOutputStream ctrlOutStrm = null;
    public RTPSocketAdapter(InetAddress addr, int port) throws IOException {
    this(addr, port, 1);
    public RTPSocketAdapter(InetAddress addr, int port, int ttl) throws IOException {
    try {
    if (addr.isMulticastAddress()) {
    dataSock = new MulticastSocket(port);
    ctrlSock = new MulticastSocket(port+1);
    ((MulticastSocket)dataSock).joinGroup(addr);
    ((MulticastSocket)dataSock).setTimeToLive(ttl);
    ((MulticastSocket)ctrlSock).joinGroup(addr);
    ((MulticastSocket)ctrlSock).setTimeToLive(ttl);
    } else {
    dataSock = new DatagramSocket(port, InetAddress.getLocalHost());
    ctrlSock = new DatagramSocket(port+1, InetAddress.getLocalHost());
    } catch (SocketException e) {
    throw new IOException(e.getMessage());
    this.addr = addr;
    this.port = port;
    * Returns an input stream to receive the RTP data.
    public PushSourceStream getDataInputStream() throws IOException {
    if (dataInStrm == null) {
    dataInStrm = new SockInputStream(dataSock, addr, port);
    dataInStrm.start();
    return dataInStrm;
    * Returns an output stream to send the RTP data.
    public OutputDataStream getDataOutputStream() throws IOException {
    if (dataOutStrm == null)
    dataOutStrm = new SockOutputStream(dataSock, addr, port);
    return dataOutStrm;
    * Returns an input stream to receive the RTCP data.
    public PushSourceStream getControlInputStream() throws IOException {
    if (ctrlInStrm == null) {
    ctrlInStrm = new SockInputStream(ctrlSock, addr, port+1);
    ctrlInStrm.start();
    return ctrlInStrm;
    * Returns an output stream to send the RTCP data.
    public OutputDataStream getControlOutputStream() throws IOException {
    if (ctrlOutStrm == null)
    ctrlOutStrm = new SockOutputStream(ctrlSock, addr, port+1);
    return ctrlOutStrm;
    * Close all the RTP, RTCP streams.
    public void close() {
    if (dataInStrm != null)
    dataInStrm.kill();
    if (ctrlInStrm != null)
    ctrlInStrm.kill();
    dataSock.close();
    ctrlSock.close();
    * Set the receive buffer size of the RTP data channel.
    * This is only a hint to the implementation. The actual implementation
    * may not be able to do anything to this.
    public void setReceiveBufferSize( int size) throws IOException {
    dataSock.setReceiveBufferSize(size);
    * Get the receive buffer size set on the RTP data channel.
    * Return -1 if the receive buffer size is not applicable for
    * the implementation.
    public int getReceiveBufferSize() {
    try {
    return dataSock.getReceiveBufferSize();
    } catch (Exception e) {
    return -1;
    * Set the send buffer size of the RTP data channel.
    * This is only a hint to the implementation. The actual implementation
    * may not be able to do anything to this.
    public void setSendBufferSize( int size) throws IOException {
    dataSock.setSendBufferSize(size);
    * Get the send buffer size set on the RTP data channel.
    * Return -1 if the send buffer size is not applicable for
    * the implementation.
    public int getSendBufferSize() {
    try {
    return dataSock.getSendBufferSize();
    } catch (Exception e) {
    return -1;
    * Return the RTCP bandwidth fraction. This value is used to
    * initialize the RTPManager. Check RTPManager for more detauls.
    * Return -1 to use the default values.
    public double getRTCPBandwidthFraction() {
    return -1;
    * Return the RTCP sender bandwidth fraction. This value is used to
    * initialize the RTPManager. Check RTPManager for more detauls.
    * Return -1 to use the default values.
    public double getRTCPSenderBandwidthFraction() {
    return -1;
    * An inner class to implement an OutputDataStream based on UDP sockets.
    class SockOutputStream implements OutputDataStream {
    DatagramSocket sock;
    InetAddress addr;
    int port;
    public SockOutputStream(DatagramSocket sock, InetAddress addr, int port) {
    this.sock = sock;
    this.addr = addr;
    this.port = port;
    public int write(byte data[], int offset, int len) {
    try {
    sock.send(new DatagramPacket(data, offset, len, addr, port));
    } catch (Exception e) {
    return -1;
    return len;
    * An inner class to implement an PushSourceStream based on UDP sockets.
    class SockInputStream extends Thread implements PushSourceStream {
    DatagramSocket sock;
    InetAddress addr;
    int port;
    boolean done = false;
    boolean dataRead = false;
    SourceTransferHandler sth = null;
    public SockInputStream(DatagramSocket sock, InetAddress addr, int port) {
    this.sock = sock;
    this.addr = addr;
    this.port = port;
    public int read(byte buffer[], int offset, int length) {
    DatagramPacket p = new DatagramPacket(buffer, offset, length, addr, port);
    try {
    sock.receive(p);
    } catch (IOException e) {
    return -1;
    synchronized (this) {
    dataRead = true;
    notify();
    System.out.println("RTPSocketAdapter receive RTP packet from port:"+port);
    System.out.println("The received RTP packet:"+new String(buffer));
    return p.getLength();
    public synchronized void start() {
    super.start();
    if (sth != null) {
    dataRead = true;
    notify();
    public synchronized void kill() {
    done = true;
    notify();
    public int getMinimumTransferSize() {
    return 2 * 1024; // twice the MTU size, just to be safe.
    public synchronized void setTransferHandler(SourceTransferHandler sth) {
    this.sth = sth;
    dataRead = true;
    notify();
    // Not applicable.
    public ContentDescriptor getContentDescriptor() {
    return null;
    // Not applicable.
    public long getContentLength() {
    return LENGTH_UNKNOWN;
    // Not applicable.
    public boolean endOfStream() {
    return false;
    // Not applicable.
    public Object[] getControls() {
    return new Object[0];
    // Not applicable.
    public Object getControl(String type) {
    return null;
    * Loop and notify the transfer handler of new data.
    public void run() {
    while (!done) {
    synchronized (this) {
    while (!dataRead && !done) {
    try {
    wait();
    } catch (InterruptedException e) { }
    dataRead = false;
    if (sth != null && !done) {
    sth.transferData(this);
    Thanks.

    The error of No format has been registered for RTP Payload type 96
    is caused by the dynamic payload mapping, when I add the dynamic mapping between dynamic payload and format. The Player cann't work yet. I think it because JMF doesn't support the format of my clips. For example:
    video: a=rtpmap:96 H263-2000/90000
    audio:a=rtpmap:97 MP4A-LATM/12000/1
    Is there some available plugin to support these format?
    Thanks

  • Broadcasting/multicasting UDP

    Is it possible to broadcast UDP packets directly from the host machine's IP address on a selected port so that anyone listening on that IP address/port can receive them? If not, how should a server go about finding an appropriate IP address/port within the 224.0.0.0 - 239.255.255.255 range to send packets on?

    Dear Josh,
    You send the UDP paket to a multicast (class D) IP address/port and the rest is the duty of the multicasting server.
    The mechnism of multicasting and how could Java programmer make use of it is some thing missed in the documents availabe. I've searched for that but all I got is an RMS "Reliable Multicast Service" Libraries like:
    JRMS at www.experimentalstuff.com
    JGroups at www.JGroups.org
    But these are libraries and focusing on the reliable multicast. If we need to multicast an audio stream we need only basic multicast using "MulticastSoket" from java.net package.
    But again the system is no only a set of API's. The question is HOW to build a multicasting audio service using java and whta do we need with java??
    the answer could be of great help
    Ahmad Khalafallah
    [email protected]

  • Regrd the data packet size

    Hi
    i have two questions
    1) where can i set the data packet size in BW and R3 and also in BI how and where can we set .
    2)by what method/logic we will select the key fields in dso.
    ex: i have 5 tables in the sourse and each table will have primary keys, now how do we know that particular primary keys should be kept in KEY FIELDS folder in DSO.
    full points will be assigned.

    HI,
    Data package settings for the data to be extracted from R3 to BI can be done through :
    1) SBIW>General Settings> Maintain Control Parameters for Data Transfer
        These settings are common for all the info packages which extract data from R3.
    2) If u want to do settings relevent to specific Infopackage then :
    RSA1>Click On the Specific Infopackage>Scheduler(in the Menu Bar)-->DataS Default Data Transfer.
    3) And if you want to do DSO Package settings then:
    Got to Transaction RSODSO_SETTINGS 
    Here u can do package settings for DSO activation ,paramenter for SID generation ect.
    And selection of Key fileds depends upon the requirement.
    Based on the key fields what all the data fileds u want to overwrite or add the corespomding data fields
    Regards,
    Chaitanya.

  • How do I change packet size for a single load

    All,
        I need to change the packet size for a single load I'm doing.  How do I set that?
        Thanks.
    Dave

    Hi..........
    For this u hav to go to the infopackage scheduler........
    If u r in Process chain >> Right click on the infopackage >> Maintain variant..........then it will come to the IP scheduler..................In the Top Scheduler Tab >> Click on it and select DataS. Default data transfer .......Now there may be a delta IP and Full upload IP for the same datasource.......check ur IP .....it is full or delta..........if full change the packet size for full upload..............otherwise for delta upload........
    If the IP is not a part of any Process chain..........then go to RSA1 >> Find the IP..........and double click on it........then the IP scheduler screen will open..........
    You can make global settings for all datasources...... in the transaction SBIW in the area General Settings >> Maintain control Parameter for Data transfer......... The parameters that you maintain here are valid as global standard values, and thus apply to all DataSources.
    Hope this helps.....
    Regards,
    Debjani........
    Edited by: Debjani  Mukherjee on Nov 13, 2008 2:19 PM

  • T3/RMI packet size very large

    In order to determine our bandwidth requirements, we recently placed a
    sniffer on our network to analyze our message packets. We've noticed
    that
    our packets are very large and it appears that much of the overhead is
    in
    the overhead of RMI or T3.
    Here are some sample numbers for similar message between a single client
    and our WLS server.
    T3: 3500 bytes
    T3 w/ HTTP tunneling: 5500 bytes
    IIOP: 1250 bytes (using VisiBroker ORB talking to Smalltalk ORB)
    As you can see the T3 packet size is 65% larger than the same packet
    sent
    via Corba/IIOP. It also appears that with RMI, all of the full class
    names
    and variable names are also being passed along within the packet. Are we
    missing something or is this an understood fact? Is there anything we
    can
    do to fix this problem? As it stands, our bandwidth requirements to
    support
    the larger T3 packet size are astronomical and this would not be
    feasible
    in a production environment. Does anyone know what is the typical
    percentage
    overhead increase per packet. It appears to be about 400%.
    Our WLS environment is described below.
    Edwin Marcial
    Continental Power Exchange
    Weblogic Environment
    WLS Server
    WLS 4.51 w/ Service Pack 7
    NativeIO = true
    ExecuteThreadCount = 40
    readTimeoutMillis=5000
    readTimeoutMillisSSL=10000
    Dell Pentium III 600 w/ 512 MB memory
    JavaSoft 1.2.2
    -ms128 -mx350
    WLS Client
    Java Application
    t3s and https (using WLS RMI)
    JavaSoft 1.1.7b
    typically Pentium 200 MHz or better w/ 64MB or more

    I think you are kind of stuck with this. RMI is a heavyweight protocol in
    comparision to IIOP. If the message sizes really bother you that much you
    may want to look into and a EJB implementation that maps RMI to IIOP such as
    the Inprise Application Server which sits atop the VisiBroker ORB.
    -paul
    Edwin Marcial <[email protected]> wrote in message
    news:[email protected]..
    In order to determine our bandwidth requirements, we recently placed a
    sniffer on our network to analyze our message packets. We've noticed
    that
    our packets are very large and it appears that much of the overhead is
    in
    the overhead of RMI or T3.
    Here are some sample numbers for similar message between a single client
    and our WLS server.
    T3: 3500 bytes
    T3 w/ HTTP tunneling: 5500 bytes
    IIOP: 1250 bytes (using VisiBroker ORB talking to Smalltalk ORB)
    As you can see the T3 packet size is 65% larger than the same packet
    sent
    via Corba/IIOP. It also appears that with RMI, all of the full class
    names
    and variable names are also being passed along within the packet. Are we
    missing something or is this an understood fact? Is there anything we
    can
    do to fix this problem? As it stands, our bandwidth requirements to
    support
    the larger T3 packet size are astronomical and this would not be
    feasible
    in a production environment. Does anyone know what is the typical
    percentage
    overhead increase per packet. It appears to be about 400%.
    Our WLS environment is described below.
    Edwin Marcial
    Continental Power Exchange
    Weblogic Environment
    WLS Server
    WLS 4.51 w/ Service Pack 7
    NativeIO = true
    ExecuteThreadCount = 40
    readTimeoutMillis=5000
    readTimeoutMillisSSL=10000
    Dell Pentium III 600 w/ 512 MB memory
    JavaSoft 1.2.2
    -ms128 -mx350
    WLS Client
    Java Application
    t3s and https (using WLS RMI)
    JavaSoft 1.1.7b
    typically Pentium 200 MHz or better w/ 64MB or more

  • Packet size and selection screen

    hi all.,
    i have a requirement where user just need to give the no. of records to be processesed for a execution of a report.
    i am using packet size were the user gives the no. of records he want to be executed in a report.
    Please let me know how to use packet size in my selection screen
    thnkx
    bhanu

    hi,
    check this code regarding  packagr size ,no of records to be processed to get out put in report,
    TABLES : mkpf,
             mseg,
             zamatdoc,
             mara.
    DATA :BEGIN OF gi_mkpf OCCURS 100,
          mblnr LIKE mkpf-mblnr,
          mjahr LIKE mkpf-mjahr,
          END OF gi_mkpf.
      data gi_mseg like zamatdoc occurs 100 with header line.
    DATA: BEGIN OF gi_mseg OCCURS 0.
            INCLUDE STRUCTURE zamatdoc.
    DATA: END OF gi_mseg.
    DATA: gv_date(11)," LIKE ekpo-aedat,
          gv_date1(11),
          year(4),
          month(2),
          day(2),
          flag(1),
          read_flag(1).
    DATA :char TYPE i,
          count TYPE i.
    *select-options : s_mtart for mara-mtart obligatory.
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-110.
    SELECT-OPTIONS : records FOR char. " OBLIGATORY.
    SELECTION-SCREEN : END OF BLOCK b1.
    START-OF-SELECTION.
      gv_date1 = sy-datum.
      year = gv_date1+0(4).
      month = gv_date1+4(2).
      day = gv_date1+6(2).
      year = year - 3.
      CLEAR gv_date1.
      CONCATENATE year month day INTO gv_date1.
    CONCATENATE day month year INTO gv_date1.
      SELECT mblnr
             mjahr
             FROM mkpf
             INTO TABLE gi_mkpf
             WHERE  budat <= gv_date1.">" and BUDAT >=  ).
      IF sy-subrc = 0.
        SORT gi_mkpf BY mblnr.
        DELETE ADJACENT DUPLICATES FROM gi_mkpf.
        CLEAR count.
        IF NOT gi_mkpf[] IS INITIAL.
          IF NOT records-low IS INITIAL .
            IF NOT records-high IS INITIAL.
              DESCRIBE TABLE gi_mkpf LINES count.
              IF records-high < count.
                DELETE gi_mkpf FROM records-high TO count.
              ENDIF.
              IF records-low <> 1.
                IF records-low <> 0.
                  DELETE gi_mkpf FROM 1 TO records-low.
                ENDIF.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDIF.
    SELECT matnr werks FROM mseg INTO CORRESPONDING FIELDS OF TABLE gi_mseg
        PACKAGE SIZE 100  FOR ALL ENTRIES IN gi_mkpf
               WHERE mblnr = gi_mkpf-mblnr
                 AND mjahr = gi_mkpf-mjahr.
          MODIFY zamatdoc FROM TABLE gi_mseg.
          COMMIT WORK.
        ENDSELECT.
    regards
    siva

  • ASA 5510 'bounces' UDP packets. Why?

    Hi. I hope to find someone who can shed a light on something that is bugging me for days now. We have an ASA (5510, running 7.2(2)) to connect our subnets to the backbone of the ISP. I received complaints about one specific connection, which I'll "draw" here:
    [ remote host 192.87.x.y (A) ] -- {"Internet"} -- [ Telecity Router ] -- [ Our ASA ] -- [ switch ] -- [ fibre ] -- [ switch ] -- [ our host 82.199.c.d (B) ]
    What happens is the following: I can successfully ping from A to B and back. I can also traceroute (UDP) from A to B and back. But a specific UDP packet sent by A (port 9001) to B (port 5432) is causing a problem. "Our ASA" does not route the packet to the correct interface, but sends it back to the Telecity router instead. Which in turn sends it back to "Our ASA" (since it is destined for our subnet). This goes back and forth for 60 times and then the TTL is expired.
    I have no idear what is happening here. The access-lists are correctly configured (as far as I know), but even if they weren't I would expect the packets to get dropped rather than put back on the sending interface. This packet is bounced (on ethernetlevel, the IP part remains the same apart from the TTL) to the sending router.
    Any pointers as to where to look for what is causing this and how to investigate this further are highly appreciated.
    Frank

    Hi Frederico. Of course I tried the packet tracer as one of the first tools :-). It showed a complete path (I used ASDM). Now I retried it (via the CLI) and something strange happens. This is a packet trace A to B with udp from port 9001 to 5431 (not 5432):
    Phase: 1
    Type: FLOW-LOOKUP / ALLOW / Found no matching flow, creating a new flow
    Phase: 2
    Type: ROUTE-LOOKUP / ALLOW / in   my_DMZ    255.255.255.240 my_DMZ
    Phase: 3
    Type: ACCESS-LIST / ALLOW / access-group my_backbone_access_in in interface my_backbone
                                                    access-list my_backbone_access_in extended permit ip any my_DMZ 255.255.255.240
    Phase: 4
    Type: IP-OPTIONS / ALLOW
    Phase: 5
    Type: ACCESS-LIST / ALLOW / access-group my_DMZ_access_out out interface my_DMZ
                                                    access-list my_DMZ_access_out extended permit ip any object-group host_group
                                                    object-group network host_group
                                                    network-object host myHost
    Phase: 6
    Type: IP-OPTIONS / ALLOW
    Phase: 7
    Type: FLOW-CREATION / ALLOW / New flow created with id 7342770, packet dispatched to next module
    Phase: 8
    Type: ROUTE-LOOKUP / ALLOW / found next-hop myHost using egress ifc my_DMZ
                                                        adjacency Active
                                                        next-hop mac address 00bb.ccdd.eeff hits 1
    Result:
    input-interface:   my_backbone / input-status: up / input-line-status: up
    output-interface: my_DMZ / output-status: up / output-line-status: up
    Action: allow
    As you can see it is a complete path. But this is what happens if I try it for A/9001 to B/5432:
    Phase: 1
    Type: FLOW-LOOKUP / ALLOW / Found flow with id 12, using existing flow
    Module information for forward flow: snp_fp_inspect_ip_options, snp_fp_adjacency, snp_fp_fragment, snp_ifc_stat
    Module information for reverse flow: snp_fp_inspect_ip_options, snp_fp_adjacency, snp_fp_fragment, snp_ifc_stat
    Result:
    input-interface: my_backbone / input-status: up / input-line-status: up / Action: allow
    Apparently the packet is send into an existing flow (is there a command to see what this flow is?) and that is where it ends. Now I need to find out why this is happening... This firewall has been reloaded a few times, but that did not solve the problem. Any pointers are highly appreciated as was this hint.
    Frank

  • Default maximum packet size in 3.7.0.1

    Hello,
    It looks like there is another reason for performing a full cluster restart to apply the first patch for 3.7 (3.7.0.1). On a machine with MTU=1500, it appears that the default maximum packet size value was changed from 1452 to 65535 and this change prevents the cluster from forming during a rolling upgrade.
    16 May 2011 14:08:01,376 ERROR Logger@813856187 3.7.0.1: 2011-05-16 14:08:01.376/1.539 Oracle Coherence GE 3.7.0.1 <Error> (thread=Cluster, member=n/a): This member could not join the cluster because of a configuration mismatch between this member and the configuration being used by the rest of the cluster. The maximum packet size (65535) for this member does not match the maximum packet size that the running cluster is using. Rejected by Member(Id=1, Timestamp=2011-05-16 14:05:49.303, Address=XXX2:11500, MachineId=38601, Location=machine:YYY2,process:14945,member:cacheserver:1, Role=cacheserver).
    16 May 2011 14:24:27,675 ERROR Logger@98371294 3.7.0.0: 2011-05-16 14:24:27.674/1.539 Oracle Coherence GE 3.7.0.0 <Error> (thread=Cluster, member=n/a): This member could not join the cluster because of a configuration mismatch between this member and the configuration being used by the rest of the cluster. The maximum packet size (1452) for this member does not match the maximum packet size that the running cluster is using. Rejected by Member(Id=1, Timestamp=2011-05-16 14:11:11.927, Address=XXX1:11500, MachineId=38600, Location=machine:YYY1,process:18509,member:cacheserver:1, Role=cacheserver).
    Can you please confirm?
    Cheers,
    Alexey

    Hi Alexey,
    Yes, the default maximum packet size for 3.7 was supposed to have been 65535, there was however a bug which prevented this from working. 3.7.0.1 fixes this issue, and thus "introduces" the new higher default value. A rolling restart is still possible, you would however need to manually configure the maximum to be 1468. The new maximum of 65535 allows the Coherence default configuration to support large clusters (greater then ~450 JVMs), where as the old default configuration would prevent new members from joining and would require a re-configuration and full restart.
    thanks,
    Mark
    Oracle Coherence

  • Setting maximum packet size in JDBC driver to send data to database

    Could someone tell me how I can set the JDBC connection property of maximum packet size to send data to database?
    Regards
    Rashed

    Hi thanks....I'm having this strange SQLException while trying to insert BLOB image data to Oracle database. I'm saying this strange because for the same image that has been inserted before it's throwing the exception. My program is run from Oracle form and then some image data are inserted into database through a loop. I can't realize what's the problem inside my code that's causing this problem. In fact, when I run my program independently not from Oracle Form, it runs fine, every image data get inserted into database. Given below is my code snippet:
    public void insertAccDocs(String[] accessions) throws SQLException
        for(int q=0; q<accessions.length; q++)
        final String  docName = accessions[q];
        dbThread = new Thread(new Runnable(){
        public void run()
          try{
          System.out.println("insertDB before connection");
                   getConnected();
                   System.out.println("insertDB after connection");
                   st=con.createStatement();
             //String docName = acc; commented
         // String docName = singleAccession;
                   String text = formatFree;
                   String qry = "INSERT INTO DOCUMENT VALUES
    ('"+docName+"','"+text+"','"+formatted+"','"+uiid+"')";
                   System.out.println("parentqry"+qry);
                   int ok=0;
                   ok=st.executeUpdate(qry);
                   if(ok==1)
                System.out.println("INSERTION SUCCESS= "+ok);
                        System.out.println("Image List Size"+ imgList.size());
                // inserting into child
                        for(int i=0;i<imgList.size(); i++)
                      String imgPath = ""+imgList.get(i);
                                  System.out.println("db"+imgPath);
                                  FileInputStream fin = new FileInputStream(imgPath);
                                  BufferedInputStream bufStr = new BufferedInputStream(fin);
                                  byte[] imgByte = new byte[bufStr.available()];
                                  String img = "" + imgNameList.get(i);
                                  System.out.println("imgid="+i);
                callable = con.prepareCall("{call prc_insert_docimage(?,?,?)}");
                callable.setString(1,docName);
                            callable.setString(2,img);
                callable.setBinaryStream(3, bufStr , (int)imgByte.length);
                callable.execute();
            callable.close();
                     con.commit();
            con.close();
                   else
                        System.out.println("INSERTION NOT SUCCESS");
       //   } //else end of severalAcc
                   }catch(Exception err){ //try
                        System.out.println(err.toString());
        } //run
      }); //runnable
      dbThread.start();     
    }And the exception thrown is :
    java.sql.SQLException: Data size bigger than max size for this type: #####
    Please let me know if possible how I can get around this.
    Regards
    Rashed

  • Java NIO - UDP packets

    I'm curious as to the rationale behind having a DatagramPacket class and just using ByteBuffers for TCP connections. I can see the logic, but I'm trying to write a Java framework wrapping NIO with TCP and UDP connections. In my C++ version I have one packet class that I use for both types of connections. I'm stuck with what to implement for Java as I'm going to need two classes, NIO's DatagramPacket and a new TCPPacket. Ideally I would like both to implement an interface or derive from a parent class so I can pass them to all class methods that deal with packets, be they UDP or TCP based. But this won't work. I could wrap DatagramPacket into a new class, and have it and the TCPPacket class implement a Packet interface. But when I'm sending UDP packets I'll be creating two objects for the price of one.
    Any suggestions?
    Thanks

    Remember that in UDP case you can easily lose packets and never know. In TCP you would receive an exception, but UDP can silently discard your packages while in transit.
    My point is, you probably should use a different package class for UDP anyway, maybe adding some stuff like a package ID that would enable re-sending and additional processing in order to ensure a successful communication.
    If you already have this information and some procedures for retrying in your package, then I agree with the previous poster in that you can use bytebuffer for both.

  • Set idoc Packet Size to always be a single packet

    Hi All,
    WE20 config has a field for packet size.  If I set it to 1, the system will create 1 packet/LUW for each idoc.
    If I set it to two, it will wait until there are 2 idocs available and then create 1 packet/LUW for both idocs.  however, if that second idoc is never created, the first idoc will never be sent.
    Is there a way to specify that the system always send 1 packet/LUW for any number of idocs?  So lets say today I created 10 idocs - the system would send that as 1 LUW.  Tomorrow, I create 25 idocs, and the system would send that as 1 LUW.
    I'm guessing the answer to this is NO, because the system will never know when to stop waiting for more idocs and send them to the receiving system already.  The PI developers here are looking for a way to avoid implementing BPM, because they say it will cause performance issues.  This was suggested as an alternative.  As I said, I doubt it's possible, but I wanted to make certain before going back to them with that info.
    Thanks,
    Bryan

    For some reason I was under the impression that RSEOUT00 wouldn't send the idocs unless the number had been reached, but I see that is not the case.
    I always make things more complicated than they need to be.
    Thanks!

Maybe you are looking for

  • Can't get conky-cli and bash scripts to both display in dwm statusbar!

    I'm trying to configure my dwm status bar to display some simple information using conky-cli and bash scripts. At first I tried just letting conky run the bash scripts (for network and volume state), but this increased my cpu usage by about 5%, which

  • Mail Adapter: XIALL and attachments

    Hi All, I have a scenario with Sender Mail adapter, where I need data from both the Mail and the attachment. I tried using XIALL, but get a SAXParserException. Is there any other way that I can use both Main Payload as well as Attachment fields? Rega

  • My Ipod will not turn on at all! help!!!!

    Well, i need help My ipod touch, it hasnt been working for a while and i realized i need to contact the support thing. everything else was working fine. and you know how you can upload pictures from a digital camera to the computeR? I decided to plug

  • JOptionPane.showInternalInputDialog does not return in 1.5

    Hello! I am trying to use JOptionPane.showInternalInputDialog() under J2SE 1.5 (tried updates 7 and 8) but it does not want to return anything, i.e. it never reaches the line which is supposed to print the dialog input regardless of pressing OK or Ca

  • Importing with unwanted adjustments to exposure, saturation, etc.

    When importing photos from two different cameras into the same catalog, some photos are over exposed, saturated, and with a changed hue.