zoukankan      html  css  js  c++  java
  • UDP发送文件

    接收端

    package com.zy.demo2;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.SocketException;
    
    public class UDPReceive {
    
        public static void main(String[] args) throws Exception {
            //1创建码头
            DatagramSocket datagramSocket = new DatagramSocket(9999);//双方约定的
            
            
            //2创建集装箱
    //        byte b[]=new byte[1024];//空的字节数组
    //        DatagramPacket datagramPacket = new DatagramPacket(b, b.length);
    //        
    //        
    //        //3收货
    //        datagramSocket.receive(datagramPacket);//线程阻塞!!!(没收到时)        
        
            
            
            //-----------------------------
            byte[] aa = new byte[1];
            
            
            
            FileOutputStream fileOutputStream = new FileOutputStream(new File("E:\接收的文件\1.png"));
            
            do {
                DatagramPacket datagramPacket = new DatagramPacket(aa, 0, aa.length);
                if(datagramPacket.getLength()!=1){
                    break;
                }
                datagramSocket.receive(datagramPacket);
                System.out.println(datagramPacket.getLength());
                fileOutputStream.write(datagramPacket.getData());
            } while (true);
            System.out.println("接收完成");
            //---------------------------------------
            //4查看货物
    //        System.out.println(new String(b));
            
            //5释放资源
            datagramSocket.close();
        }
    
    }

    发送端

    package com.zy.demo2;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    public class UDPSend {
    
        public static void main(String[] args) throws Exception {
            
            //1创建码头
            DatagramSocket datagramSocket = new DatagramSocket();
            //2创建集装箱
    //        String data="中国食用油";
    //        byte[] bytes = data.getBytes();
            
            
            //3发送数据
            //根据名字获取主机(机器互联)
            InetAddress byName = InetAddress.getByName("192.168.219.61");//getByName("127.0.0.1")也可以写ip,不一定非得是主机名
            
    //        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, byName, 9999);    
                    
    //        datagramSocket.send(datagramPacket);
        
            byte bb[]=new byte[1];//udp容易丢包,为了降低损失,字节数组调整小些
            FileInputStream fileInputStream = new FileInputStream(new File("E:\13.png"));
            int read = fileInputStream.read(bb);
            
            while(read!=-1){
                DatagramPacket datagramPacket = new DatagramPacket(bb, bb.length, byName, 9999);    
                datagramSocket.send(datagramPacket);
                read = fileInputStream.read(bb);
            }
         
            //4释放资源
            datagramSocket.close();
      
        }
    
    }

    程序一个bug:接收端接收完数据时JVM还在运行着,找不到合适的方法让退出JVM

  • 相关阅读:
    python_workone
    python___"TypeError: 'module' object is not callable"
    显示pycharm的行号
    pycharm切换python版本
    yum安装pip
    informix数据库常用命令(转)
    eclipse打不开的解决办法
    linux修改时间大全
    在安装mysqli的时候,出现error: ext/mysqlnd/mysql_float_to_double.h: No such file or directory
    Amazon Linux AMI 2015.09 (HVM)平台搭建lamp
  • 原文地址:https://www.cnblogs.com/qfdy123/p/11131842.html
Copyright © 2011-2022 走看看