Java 用UDP协议传输.png图片文件,数据包大小只有1024,该如何修改程序

 客户端:

public class UdpClient {
    public static void main(String[] args) {
        try {
            DatagramSocket ds=new DatagramSocket();
            DatagramPacket dp=null;
            byte[] bytes=new byte[1024];
            int len;
            InputStream is=new FileInputStream("D:\\a\\MIUI.png");
            while ((len=is.read(bytes))!=-1){
               dp =new DatagramPacket(bytes, bytes.length ,InetAddress.getByName("127.0.0.1"),8888);
                ds.send(dp);
            }
            System.out.println("发送成功!"+dp.getLength());
            byte[] bytes2=new byte[1024];
            dp=new DatagramPacket(bytes2,0, bytes2.length);
            ds.receive(dp);
            System.out.println("服务器:"+new String(dp.getData(),0,dp.getLength()));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

服务器:

public class Udpserver {
    public static void main(String[] args) {
        try {
            OutputStream os=new FileOutputStream("D:\\b\\a.png");
            DatagramSocket ds=new DatagramSocket(8888);
            byte[] bytes=new byte[1024];
            DatagramPacket dp=new DatagramPacket(bytes,0, bytes.length);
            ds.receive(dp);
            os.write(dp.getData(),0,dp.getLength());
            System.out.println(".......");
            String msg="我是服务器!";
            dp=new DatagramPacket(msg.getBytes(), msg.getBytes().length,dp.getSocketAddress());
            ds.send(dp);
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

byte[] a = new byte[is.available()];

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632