java网络编程 UDP通信协议实现局域网内文件的发送和接收

要实现两台内网下的机子进行通信,首先得知道接收方的内网IP,获取IP的方式;可以打开任务管理器的以太网进行查看;

如下

 

也可以通过 win+r 输入cmd ,然后输入 ipconfig  回车  进行查看接收端的内网ip

 

 下来是代码部分;

我现在要将E盘下的的LCD1602的PDF文件发送到192.168.1.6()

发送端代码:

import java.io.*;
import java.net.*;
public class UDP_Send {
    public static void main(String[] args) throws Exception {
        //文件io
        File file = new File("E:\\Documets\\Desktop\\C51\\芯片资料\\LCD1602数据手册.pdf");  //发送的文件路径
        FileInputStream fis = new FileInputStream(file);

        //网络编程
        DatagramSocket socket = new DatagramSocket();
        byte[]bytes = new byte[1024];
        DatagramPacket packet;

        int len ;
        do {
            len=fis.read(bytes);
            packet = new DatagramPacket(bytes,bytes.length,InetAddress.getByName("192.168.1.6"),10000);
            socket.send(packet);
        }while (len !=-1);

        byte[] a=new byte[0];
        packet = new DatagramPacket(a,a.length,InetAddress.getByName("192.168.1.6"),10000);
        socket.send(packet);        //发送空包,代表发送完毕
        socket.close();
        System.out.println("向"+packet.getAddress().toString()+"发送文件完毕!端口号为:"+packet.getPort());
    }
}

接收端:

将文件保存到  F盘下  并且命名为  单片机LCD1602

import java.io.*;
import java.net.*;

public class UDP_Reception {
    public static void main(String[] args) throws Exception {
        File file = new File("F:\\单片机LCD1602.pdf");  //要接收的文件存放路径
        FileOutputStream output = new FileOutputStream(file);           //使用字节流输出文件,送到上面的文件路径下
        byte[] data=new byte[1024];
        DatagramSocket ds=new DatagramSocket(10000);//声明接收端口 号
        DatagramPacket dp=new DatagramPacket(data, data.length);
        int len ;   //数据长度
        do {
            ds.receive(dp);
            len = dp.getLength();
            output.write(data,0, data.length);
            output.flush();
        }while (len>0);

        ds.close();     //关闭传送管道
        System.out.println("接收来自"+dp.getAddress().toString()+"的文件已完成!对方所使用的端口号为:"+dp.getPort());
    }
}

 实验结果:

发送端运行结果,

 

 接收端运行结果:

 

 去F盘下查看文件

 

 发现文件存在,并且可以正常打开。说明文件输送完成。

经过多次试验别的小文件均可,但是UDP协议是不可靠的,在进行大文件的传送的时候,有可能会丢包  ,导致整个文件内容错乱甚至是打不开。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值