900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java网络编程 UDP通信协议实现局域网内文件的发送和接收

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

时间:2024-01-09 02:04:33

相关推荐

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

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

如下

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

下来是代码部分;

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

发送端代码:

import java.io.*;import .*;public class UDP_Send {public static void main(String[] args) throws Exception {//文件ioFile 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 .*;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协议是不可靠的,在进行大文件的传送的时候,有可能会丢包 ,导致整个文件内容错乱甚至是打不开。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。