Java数据报编程之单播[2]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

  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);
  }

本文关键:Java数据报编程之单播
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top