public void sendFile(String file) {
cdp = new DataPacket(file);
System.out.println(file);
Iterator it = cdp.getDataPackets().iterator();
byte[] b;
while (it.hasNext()) {
b = ( (DataEntry) it.next()).getByte();
//数据报是自包含的,自描述的数据,它的投递是由路由器执行的,路由器路由算法根据报文的目标地址选择适当的路由递送报文,
//所以数据报中要指定目标IP地址和目标主机处理端口.
DatagramPacket dp = new DatagramPacket(b, 0, b.length, ia,DatagramRecvSender_s.DatagramPort);
try {
Thread.sleep(100);
if(dp==null)
continue;
road.send(dp);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
public boolean isHandling() {
return ishandling;
}
public void isHandling(boolean ishand) {
ishandling = ishand;
}
public void run() {
byte[] buffer = new byte[DataPacket.DataSwapSize];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
DataPacket dp = new DataPacket();
while (ishandling) {
packet.setLength(buffer.length);
System.out.println("wait .. ");
try {
road.receive(packet);
dp.Add(packet.getData());
if (dp.isFull()) {
dsevent.setImage(dp.Gereratedata());
this.processRecvFinishedEvent(dsevent);
dp = new DataPacket();
}
}
catch (IOException ex) {
System.out.println(ex);
}
}
}
public static void main(String[] args) {
String file[];
ArrayList al = new ArrayList();
String path = "E:\\nature\\";
File f = new File(path);
file = f.list();
DatagramRecvSender_s dgrs = new DatagramRecvSender_s("");
for(int j=0;j<1000;j++)
for (int i = 0; i < file.length; i++) {
try {
Thread.sleep(2000);
}
catch (InterruptedException ex) {
}
if (file[i].endsWith("jpg") || file[i].endsWith("bmp"))
dgrs.sendFile(path + file[i]);
}
}
}
下面看接收端的界面.
package recmail.multiservice;
import java.awt.BorderLayout;
public class testDual
extends DualWindow implements DataSwapListener {
JImagePanel ip;
java.awt.Image bi;
public testDual() {
}
public void init() {
super.init();
ImageShow is = new ImageShow();
is.addDataSwapListener(this);
Thread thread = new Thread(is, "test");
thread.start();
}
public static void main(String[] args) {
testDual test = new testDual();
test.initmain();
test.go();
DatagramRecvSender_s dgrs = new DatagramRecvSender_s();
dgrs.addDataSwapListener(test);
Thread thread = new Thread(dgrs, "test");
thread.start();
}
public void initmain() {
super.initmain();
ip = new JImagePanel();
root.setLayout(new BorderLayout(5, 5));
root.add(ip, BorderLayout.CENTER);
}