发送端:

package cn.sasa.netDemo1;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; public class SendDemo { public static void main(String[] args) throws IOException {
/**
* DatagramPacket 数据报包,用于封装数据
*
* DatagramSoket 用于数据传输
*
* 两者都用于发送和接收
*/ //实现UDP的发送
//1、创建DatagramPacket对象,封装数据、接收的地址和端口
//2、创建DatagramSocket
//3、调用DatagramSocket的send方法发送数据
//4、关闭资源,关闭DatagramSocket
//
byte[] buff = "hello".getBytes();
InetAddress host = InetAddress.getByName("127.0.0.1");
DatagramPacket packet = new DatagramPacket(buff, buff.length, host, 8046); DatagramSocket socket = new DatagramSocket();//发送使用空参构造函数
socket.send(packet);//调用send
socket.close();
} }

接收端:

package cn.sasa.netDemo1;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket; public class ReceiveDemo { public static void main(String[] args) throws IOException {
/**
* UDP的接收端
*
* DatagramPacket 封装数据包,接收数据
*
* DatagramSocket 实现数据传输
*
* 接收步骤:
* 1、创建DatagramSocket,绑定端口号,与发送端的端口号保持一致
* 2、创建字节数组,接收数据
* 3、创建DatagramPacket
* 4、调用DatagramSocket的receive(DatagramPacket p)
* 接收数据放在数据包
* 5、拆包
* 发送端IP
* 接收到的字节长度
* 发送端端口号
* 6、关闭资源
*
*/
//DatagramPacket
DatagramSocket socket = new DatagramSocket(8046);
byte[] buff = new byte[1024];
DatagramPacket packet = new DatagramPacket(buff, buff.length);
socket.receive(packet);
int length = packet.getLength();//接收的字节长度
System.out.println(new String(buff,0,length));
System.out.println(packet.getAddress().getHostAddress()); //打印发送端IP地址
System.out.println(packet.getPort());
socket.close();
} }

最新文章

  1. Lua 与 Redis
  2. c#选择文件文件夹
  3. Android学习系列(41)--Android Studio简单使用
  4. [转]oracle 10g数据泵之impdp-同时导入多个文件
  5. 【转】vs2012 打包安装更改 setup.exe的图标
  6. 最新中国IP段获取办法与转成ROS导入格式
  7. MVC弹出子页面向父页面传值
  8. 异步文件上传组件 Uploader
  9. 关于设置ScrollView的滚动条为隐藏的方法
  10. Android:创建可穿戴应用 - 安装和依赖管理
  11. Mac通过brew安装reds、memcached
  12. WeTest----如何使用WeTest进行App性能测试?
  13. Linux cpu 内存 压力测试
  14. [物理学与PDEs]第2章习题4 习题 3 的变分
  15. 学习笔记----php环境配置
  16. 5、Kafka生产过程分析
  17. Visual Studio Code--开发大大们都在用的编辑器
  18. HDU 2612 find a way 【双BFS】
  19. highchart应用示例1--2个不同类型变量2个y轴
  20. jQuery操作DOM节点的方法总结

热门文章

  1. 【emWin】例程十一:GIF图像显示
  2. Go Revel - i18n(国际化)
  3. 从去除毛刺的策略看开运算opening_circle和闭运算closing_circle的异同
  4. 详解Linux安装GCC
  5. Docker 基本指令整理(一)
  6. Xcode6: CocoaPods 错误 target overrides the `OTHER_LDFLAGS`...
  7. android bionic c 对比 gnu c
  8. Kafka 2.0 ConsumerGroupCommand新功能
  9. 解决在antd中使用 autoprefixer 9.4.5 会抛出错误 Replace text-decoration-skip: ink to text-decoration-skip-ink: auto, because spec had been changed 的问题
  10. 【python】用python生成pdf文件