文章作者 100test 发表时间 2007:12:21 12:17:17
来源 100Test.Com百考试题网
  /**
   * 按序号开始向前或者是向后寻找最近的帧片段,日后可以增加请求重发功能,通过开一个通信连接.
   * @param sn int
   * @return DataEntry
   */
  private DataEntry seachDeData(int sn) {
    DataEntry de = null.
    int initvalue, minvalue = 10000.
    DataEntry back, fore = null.
    for (int i = 0. i < al.size(). i  ) {
      de = (DataEntry) al.get(i).
      if (header.getStreamsize() == de.getStreamsize()) {
        initvalue = Math.abs(de.getSn() - sn).
        if (de.getFragmentcounter() != de.getSn() &.&. initvalue < minvalue) {
          minvalue = initvalue.
          fore = de.
        }
      }
    }
    return fore.
  }
  /**
   * 除去最后一帧外,随机抽取一帧.
   * @return DataEntry
   */
  private DataEntry seachDeData() {
    DataEntry de = null.
    for (int i = 0. i < al.size(). i  ) {
      de = (DataEntry) al.get(i).
      System.out.println("sky ::::"   de.getFragmentcounter()   ":"   de.getSn()  
                         ":"   i).
      if (header.getStreamsize() == de.getStreamsize()) {
        if (de.getFragmentcounter() != de.getSn()) {
          break.
        }
      }
    }
    return de.
  }
  /**
   * 生成组装完的结果数据.因为用图像来做测试,所以令其返回图像.
   * @return Image
   */
  public java.awt.Image Gereratedata() {
     ByteArrayInputStream bis.
     java.awt.image.BufferedImage bimage = null.
     try {
       byte[] b = fetchDataPackets_sn().toByteArray(). 
       //fetchDataPackets_old1()
       bis = new ByteArrayInputStream(b).
       bimage = javax.imageio.ImageIO.read(bis).
     }
     catch (Exception ex1) {
       ex1.printStackTrace().
     }
     return bimage.
  }
  public static void main(String args[]) {
    DataPacket dp = new DataPacket("e:\\nature\\14.jpg").
  }
}
/**
 * 数据实体,充当临时处理场所.
 * @author Administrator
 *
 */
class DataEntry {
  byte[] bytes.
  int fragmentcounter, sn, actbytesize.
  long streamsize.
  int minfragment.
public DataEntry() {
}
  public DataEntry(int size) {
    this.actbytesize = size.
  }
  public DataEntry(byte[] b, int i) {
    this.bytes = b.
    this.actbytesize = i.
  }
  public byte[] getByte() {
    return this.bytes.
  }
  public void setBytes(byte[] b) {
    this.bytes = b.
  }
  public void setStreamsize(long size) {
    this.streamsize = size.
  }
  public long getStreamsize() {
    return this.streamsize.
  }
  public int getMinfragment() {
    return minfragment.
  }
  public synchronized void setSn(int i) {
    this.sn = i.
  }
  public synchronized int getSn() {
    return sn.
  }
  public synchronized int getFragmentcounter() {
    return fragmentcounter.
  }
  public synchronized void setFragmentcounter(int c) {
    this.fragmentcounter = c.
  }
  public void setActByteSize(int size) {
    actbytesize = size.
  }
  public int getActByteSize() {
    return actbytesize.
  }
  public String toString() {
    return this.streamsize   "::"   this.fragmentcounter   "::"   this.sn  
        "::"   this.actbytesize   " recv DataEntry".
  }
}
/**
 * 报头,处理报头格式
 * @author Administrator
 *
 */
class PacketHeader implements Serializable{
  public static final int HEADER_BUFFER_SIZE = 1024.
  int fragmentcounter, sn.
  int actbytesize = PacketBody.BODY_BUFFER_SIZE.
  byte[] header. //= new byte[HEADER_BUFFER_SIZE].
  long streamsize.
  int minfragment.
public PacketHeader() {
}
  public PacketHeader(long l) {
    this.setStreamsize(l).
}
  public PacketHeader(String s) {
    String[] tm = s.split("::").
    this.setActByteSize(Integer.parseInt(tm[3])).
    this.setSn(Integer.parseInt(tm[2])).
    this.setFragmentcounter(Integer.parseInt(tm[1])).
    this.setStreamsize(Long.parseLong(tm[0])).
  }
  /**
   * 根据文件的段的顺序生成数据头.
   * @param sn 文件序列
   */
 
相关文章
Java数据报之失序和丢包(2)
Java数据报之失序和丢包(1)
Java中的Cla Loader与Package机制
在Java程序中处理数据库超时与死锁
J 、Servlet中的相对路径和绝对路径
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛