两个重要的类:

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/DatagramPacket.html

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/DatagramSocket.html


 简单示例:

package netProgram;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress; /**
* 发送端
* 1.使用DatagramSocket 指定端口 创建发送端
* 2.准备数据 准成字节数组
* 3.封装成 DatagramPacket,需要指定目的地
* 4.发送包裹 send(DatagramPacket packet)
* 5.释放资源
* */
public class UDPTest2 {
public static void main(String[] args) throws Exception {
DatagramSocket client = new DatagramSocket(8888);//自身的端口号
String data = "hello udp program!";
byte[] datas = data.getBytes();
//指定发往的目的地
DatagramPacket packet = new DatagramPacket
(datas, 0, datas.length,
new InetSocketAddress("localhost", 9999));
client.send(packet);
client.close();
}
}
package netProgram;

import java.net.DatagramPacket;
import java.net.DatagramSocket; /**
* 接收端
* 1.使用DatagramSocket 指定端口 创建接收端
* 2.准备容器 封装成DatagramPacket
* 3.阻塞式接收 packet receive(DatagramPacket packet)
* 4.分析数据 byte[] getData()
* 5.释放资源
* */
public class UDPTest {
public static void main(String[] args) throws Exception {
DatagramSocket server = new DatagramSocket(9999);
byte[] container = new byte[64*1024];
DatagramPacket packet = new DatagramPacket(container, 0,container.length);
server.receive(packet); byte[] data = packet.getData();
System.out.println(new String(data));
server.close();
}
}

发送对象:关键是要转换成字节数组

package netProgram;

import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket; /**
* 接收端 1.使用DatagramSocket 指定端口 创建接收端 2.准备容器 封装成DatagramPacket 3.阻塞式接收 packet
* receive(DatagramPacket packet) 4.分析数据 byte[] getData() 5.释放资源
*/
public class UDPTest {
public static void main(String[] args) throws Exception {
DatagramSocket server = new DatagramSocket(9999);
byte[] container = new byte[64 * 1024];
DatagramPacket packet = new DatagramPacket(container, 0, container.length);
server.receive(packet); byte[] data = packet.getData();
ByteArrayInputStream stream = new ByteArrayInputStream(data, 0, data.length);
ObjectInputStream ois = new ObjectInputStream(stream);
Person temp = (Person) ois.readObject();
System.out.println(temp.getAge() + "--->" + temp.getName());
server.close();
}
}
package netProgram;

import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress; /**
* 发送端
* 1.使用DatagramSocket 指定端口 创建发送端
* 2.准备数据 准成字节数组
* 3.封装成 DatagramPacket,需要指定目的地
* 4.发送包裹 send(DatagramPacket packet)
* 5.释放资源
* */
public class UDPTest2 {
public static void main(String[] args) throws Exception {
DatagramSocket client = new DatagramSocket(8888);//自身的端口号
//String data = "hello udp program!";
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(stream);
oos.writeObject(new Person(15, "john"));
//byte[] datas = data.getBytes();
byte[] datas = stream.toByteArray();
//指定发往的目的地
DatagramPacket packet = new DatagramPacket
(datas, 0, datas.length,
new InetSocketAddress("localhost", 9999));
client.send(packet);
client.close();
}
}

最新文章

  1. Oracle XMLTable 使用教程与实例
  2. Django- 1- 数据库设置
  3. 经典C#编程理解,概要,经典
  4. 【转】【C++】ShellExecute, WinExec, CreateProcess 三者的区别
  5. vim自动补全:go
  6. Zoj 3868 GCD Expectation
  7. Dragger代码实现
  8. PADSPOWERPCB中怎样去隐藏一些PIN脚
  9. Encode and Decode Strings 解答
  10. [Swust OJ 1132]-Coin-collecting by robot
  11. Advance Installer安装问题
  12. BiLstm与CRF实现命名实体标注
  13. 决AndroidStudio 安卓模拟器安装在D盘问题
  14. shell脚本--分支、条件判断
  15. vs视图引入命名空间设置方法
  16. 嵌入式telnet的安装
  17. why inline functions must be put in header files?
  18. 。。。。。。不带http https : 不报错 spring boot elasticsearch rest
  19. Git基础--笔记
  20. http状态码+http请求方式

热门文章

  1. 网站图片增强JS插件2.0(兼容IE&FF)
  2. java 防止表单重复提交(serlvet)
  3. lucene DocValues——本质是为通过docID查找某field的值 看图
  4. Watir: Get document detail information in Watir.
  5. AutoIT: WinSetState可以定义窗口大小
  6. 从0开始学习Hadoop(2) 环境准备-Win7主机与Ubuntu虚拟机共享文件夹设置
  7. bzoj3160
  8. bzoj 4596
  9. MultipartResolver实现文件上传功能
  10. Vue解决安卓4.4不兼容的问题