java基于UDP协议发送、接收数据和附件(图片),byte数组

本文介绍了使用Java实现基于UDP协议发送和接收数据,包括附件(如图片)的方法。UDP作为非连接协议,不建立连接即可发送数据,适合少量多次的数据传输。文中提供了客户端发送数据和服务端接收数据的Java代码示例。
摘要由CSDN通过智能技术生成

    UDP协议是非连接协议,不与目标地址建立连接,简单说就是只负责发送给目标地址数据,不等待目标返回结果。每次发送只能是少量数据,不过可以少量多次发送,发送几M的图片还是没问题的。

    以下是我发送数据和接收数据的相关代码,以供参考。

  • java基于UDP协议发送数据(客户端):

    /***
     * 
     * @param licensePlate  业务数据
     * @param platPicUrls   业务图片地址
     * @param pudipconfig   目标地址ip、端口号,服务地址的端口号(用于监听是否有数据进入)
     * @throws Exception
     */
    public void sendAllUDP(LicensePlate licensePlate, List<String> platPicUrls,Pudipconfig pudipconfig) throws Exception {
        //初始化用于发送数据
        byte[] buf = new byte[UDPUtils.BUFFER_SIZE];
        //初始化用户接收数据
        byte[] receiveBuf = new byte[100];
        //定义照片
        RandomAccessFile accessFile = null;
        //定义服务端
        DatagramSocket dsk = null;
        //定义数据包
        DatagramPacket dpk;
        //定义读取大小
        int readSize;

        try {
            //初始化服务端  参数为端口号,作用在于监听该端口号是否有数据交互
            dsk = new DatagramSocket(Integer.parseInt(pudipconfig.getExt1()));
            //初始化数据包  参数为:byte类型存放数据,数据大小,目标地址,目标端口
            dpk = new DatagramPacket(buf, buf.length,new InetSocketAddress(InetAddress.getByName(pudipconfig.getIpaddress()), Integer.parseInt(pudipconfig.getIpport())));

            //将需要发送的业务数据转成byte类型并放入数据包
            dpk.setData(licensePlate.getLicenseplatenumber().getBytes("UTF-8"),0,licensePlate.getLicenseplatenumber().getBytes().length);
            //发送数据
            dsk.send(dpk);

            //为保证数据准确性,在每次发送数据后等待目标地址反向调用发送端的ip+端口,并用receiveBuf存下返回的数据是否成功
            //该方式只适用于单对单传输
            dpk.setData(receiveBuf, 0, receiveBuf.length);
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值