接收端

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

最新文章

  1. 两种方法解决tomcat的 Failed to initialize end point associated with ProtocolHandler ["http-apr-8080"]
  2. Mac下用g++编译opencv程序报错
  3. 【C51】单片机中断
  4. Disaster Recovery, High Availability, and Continuous Availability - What's the Difference?
  5. 64位ubuntu下装32位软件
  6. mysql中自己定义函数编程
  7. JS之正则表达式验证URL
  8. java 对于url地址的实体符号的处理
  9. [转载]python os.path模块
  10. python学习之成员信息增删改查
  11. 失物招领发布-HTML5调摄像头
  12. 加速器eaccelerator不兼容高版本php
  13. 《31天成为IT服务达人》之技能篇硬件维护技能概要
  14. 学习Linux(一)环境搭建
  15. 南京邮电大学java第二次实验报告
  16. 李耀于NOIP2010集训出的题 Dvalue
  17. C++中字符数组与string的相互转换
  18. html table标签
  19. Pandas时间序列
  20. 8.7 正睿暑期集训营 Day4

热门文章

  1. node.js常用内置模块一
  2. mysql修改sql_mode为宽松模式
  3. 深入浅出Dotnet Core的项目结构变化
  4. 【Redis3.0.x】数据类型
  5. ubuntu环境下搭建Hadoop集群中必须需要注意的问题
  6. 【SpringBoot】前缀树 Trie 过滤敏感词
  7. 【Python】PDF转WORD
  8. 【TOMCAT】windows7下tomcat6环境部署
  9. php 换行符
  10. 精通MySQL之架构篇