哥们儿能把代码贴全一点吗 ?我也在做UDP广播发送图片   http://bbs.csdn.net/topics/390933843   

解决方案 »

  1.   

    我写的不全,现在只能分开发送一张图片,你可以参考下
    import java.awt.*;
    import java.io.File;
    import java.io.FileInputStream;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;import javax.imageio.ImageIO;
    public class udp_server {
     public static void main(String args[]) throws Exception {
          Image[] images = null;
          Boolean stop=true;
          int index=0;
        
       //   images=ad()
    //       images=getToolkit.getImage("p1.jpg");
            DatagramSocket socket = new DatagramSocket();
            String filePath0 = "D:/image/a.jpg";  
            String filePath1 = "D:/image/g1.gif";
            String filePath2 = "D:/image/g2.gif"; 
            String filePath3 = "D:/image/g3.gif"; 
            String filePath4 = "D:/image/g4.gif"; 
            String filePath5 = "D:/image/g5.gif"; 
            String filePath6 = "D:/image/g6.gif"; 
            String filePath7 = "D:/image/g7.gif"; 
            String filePath8 = "D:/image/g8.gif"; 
            String filePath9 = "D:/image/g9.gif";
            String filePath10 = "D:/image/g10.gif";
            String filePath11 = "D:/image/g11.gif";
            String filePath12 = "D:/image/g12.gif";
            String filePath13 = "D:/image/g13.gif";
            String filePath14 = "D:/image/g14.gif";
            String filePath15 = "D:/image/g15.gif";
            String filePath16 = "D:/image/g16.gif";
            String filePath17 = "D:/image/g17.gif";
            String filePath18 = "D:/image/g18.gif";
            String filePath19 = "D:/image/g19.gif";
            String[] addr=new String[10];
            addr[0]="D:/image/a.jpg";
            addr[1]="D:/image/g1.jpg";
            addr[2]="D:/image/g2.jpg";
            addr[3]="D:/image/g3.jpg";
            addr[4]="D:/image/g4.jpg";
     /*           File fi = new File(filePath0);
                int n=100;            System.out.println("文件长度:" + (int) fi.length());  
            System.out.println("Port:" + socket.getLocalPort());  
            System.out.println("IPAddress:" + socket.getLocalAddress());  */
      while(stop)
      {
      
       File fi = new File(addr[index]);
               int n=0;
               int k=1;
                          System.out.println("文件长度:" + (int) fi.length());  
      //     System.out.println("Port:" + socket.getLocalPort());  
      //     System.out.println("IPAddress:" + socket.getLocalAddress()); 
            FileInputStream Fs=new FileInputStream(addr[index]);
            System.out.println("addr["+index+"]:"+addr[index]);
            InetAddress address1 = InetAddress.getByName("192.168.253.51");
            byte buf[]=new byte[2048];
            while((Fs.read(buf))!=-1)
            {
             DatagramPacket packet1 = new DatagramPacket(buf,0, buf.length, address1,53560); 
             socket.send(packet1);
            
             System.out.println("第K:"+k+"发送!:");
             k++;
            }
      //      Fs.read(buf);
           
    //     InetAddress address2 = InetAddress.getByName("192.168.253.51");  
    //     DatagramPacket packet1 = new DatagramPacket(buf,0, buf.length, address1,53560); 
    //     DatagramPacket packet2 = new DatagramPacket(buf, buf.length, address2,55555); 
    //     socket.send(packet1);
    //     socket.send(packet2);
        System.out.println("第"+index+"次发送成功!"); 
        if(index==4)
        { 
         System.out.print("发送完成!");
         stop=false;
        }
        index++;
      
        Thread.sleep(5000);
      
      }
        
        
    /*         byte buf[] = new byte[1024];  
            DatagramPacket packet = new DatagramPacket(buf, buf.length);  
            socket.receive(packet);  
            socket.disconnect();
            
            System.out.println("Received Data:" + new String(packet.getData(), 0, packet.getLength()));
            System.out.println("Data:"+new String(packet.getData()));
            System.out.println("Length:" + packet.getLength());  
            System.out.println("Offset:" + packet.getOffset());  
            System.out.println("Port:" + packet.getPort());  
            System.out.println("Address:" + packet.getAddress());  
            System.out.println("SocketAddress:" + packet.getSocketAddress());  */
     }
    }
      

  2.   

    我还没找到
    那你第一张图片怎么恢复的呢??我找了很多都不是UDP的。。 加个QQ探讨一下吧
      

  3.   

    第一张图片的那些UDP包在接收端是怎么循环接收的呢?byte[] recvBuffer = null;
        int MSG_LEN = 8192;
        DatagramPacket recvPacket;
      
        public void run() {  
         try {
    DatagramSocket msg_socket =new DatagramSocket(34321);
    recvBuffer = new byte[MSG_LEN];
    recvPacket = new DatagramPacket(recvBuffer, recvBuffer.length);
    //System.out.println("sdf");
    System.out.println("wrong?");
    msg_socket.receive(recvPacket);
    //view.setText(new String(recvPacket.getData()));

    //view.setText(new String(recvPacket.getData()));
    //view.setText("w:"+text.getText().toString());
           Message msgMessage=Message.obtain();  
          
            msgMessage.obj = recvPacket.getData();
            
            msgMessage.what = IS_FINISH;
            handler.sendMessage(msgMessage); 

    } catch (SocketException e) {
    //Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
    e.printStackTrace();
    } catch (IOException e) {
    //Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
    e.printStackTrace();
    }
    我的代码是这样,现在只能接一个包吧应该。所以想问一下怎么用循环接收这张图片的这些UDP包