<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import java.lang.*;
import java.applet.*;
import java.awt.*;
import java.io.*;
import java.net.*;

public class DynMcufClientRecv extends Thread
{
  private DatagramSocket sock;
  private InetAddress host;
  private int port;
  private FrameReceiver receiver;
  private boolean termReq = false;

  DynMcufClientRecv( DatagramSocket sock, InetAddress host, int port, FrameReceiver receiver )
  {
    this.sock = sock;
    this.host = host;
    this.port = port;
    this.receiver = receiver;
  }

  public void run( )
  {
    while( ! termReq )
    {
      try
      {
        byte[] data = new byte[8192];
        DatagramPacket framePacket = new DatagramPacket( data, 8192 );
        sock.receive( framePacket );
        if( framePacket.getAddress( ).equals( host ) &amp;&amp; framePacket.getPort( ) == port )
        {
          int length = framePacket.getLength( );
          data = framePacket.getData( );
          if( length &gt;= 12 &amp;&amp; data[0] == 0x23 &amp;&amp; data[1] == 0x54
                           &amp;&amp; data[2] == 0x26 &amp;&amp; data[3] == 0x66 )
          {
            int height = (data[4] &amp; 0xFF) &lt;&lt; 8 | (data[5] &amp; 0xFF);
            int width = (data[6] &amp; 0xFF) &lt;&lt; 8 | (data[7] &amp; 0xFF);
            int channels = (data[8] &amp; 0xFF) &lt;&lt; 8 | (data[9] &amp; 0xFF);
            int maxval = (data[10] &amp; 0xFF) &lt;&lt; 8 | (data[11] &amp; 0xFF);
            if( height &gt;= 1 &amp;&amp; height &lt;= 100 &amp;&amp; width &gt;= 1 &amp;&amp; width &lt;= 100
             &amp;&amp; channels &gt;= 1 &amp;&amp; channels &lt;= 3 &amp;&amp; maxval &gt;= 1 &amp;&amp; maxval &lt;= 255
             &amp;&amp; length &gt;= 12 + height * width * channels )
            {
              Frame frame = new Frame( height, width, channels );
              frame.setData( maxval, data, 12 );
              receiver.newFrame( frame );
            }
          }
        }
      }
      catch( IOException e ) { }
    }
  }

  public void terminate( )
  {
    termReq = true;
    this.interrupt( );
  }
}
</pre></body></html>