文章作者 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中的相对路径和绝对路径
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛