首页
统计
关于
Search
1
Sealos3.0离线部署K8s集群
1,087 阅读
2
类的加载
742 阅读
3
Spring Cloud OAuth2.0
726 阅读
4
SpringBoot自动装配原理
691 阅读
5
集合不安全问题
589 阅读
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
FastApi
登录
Search
标签搜索
Java
CSS
mysql
RabbitMQ
JavaScript
Redis
JVM
Mybatis-Plus
Camunda
多线程
CSS3
Python
Spring Cloud
注解和反射
Activiti
工作流
SpringBoot
Mybatis
Spring
html5
蘇阿細
累计撰写
390
篇文章
累计收到
4
条评论
首页
栏目
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
FastApi
页面
统计
关于
搜索到
1
篇与
的结果
2020-11-23
UDP
类似于发短信,不用连接,只需要知道接收端的地址发送消息发送端package com.network.lesson03; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * @Author suaxi * @Date 2020/11/23 11:03 * UDP发送消息,不需要连接服务器 */ public class UpdClientDemo01 { public static void main(String[] args) throws Exception { //1、建立一个socket DatagramSocket datagramSocket = new DatagramSocket(); //2、建立包 String mgs = "故乡的樱花开了!"; InetAddress localhost = InetAddress.getByName("localhost"); int port = 8888; //数据 数据的长度起始 要发送给谁 DatagramPacket datagramPacket = new DatagramPacket(mgs.getBytes(), 0, mgs.length(),localhost,port); //3、发送包 datagramSocket.send(datagramPacket); //4、关闭流 datagramSocket.close(); } } 接收端package com.network.lesson03; import java.net.DatagramPacket; import java.net.DatagramSocket; /** * @Author suaxi * @Date 2020/11/23 11:18 * UDP接收端,还是要等待客户端的连接 */ public class UpdServerDemo01 { public static void main(String[] args) throws Exception { //开放端口 DatagramSocket datagramSocket = new DatagramSocket(8888); //接收数据包 byte[] bytes = new byte[1024]; DatagramPacket datagramPacket = new DatagramPacket(bytes, 0, bytes.length); datagramSocket.receive(datagramPacket); //阻塞接收 System.out.println(datagramPacket.getAddress().getHostAddress()); //接收地址 System.out.println(new String(datagramPacket.getData(),0,datagramPacket.getLength())); //数据包消息 //关闭连接 datagramSocket.close(); } } 循环发送消息package com.network.chat; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.InetSocketAddress; /** * @Author suaxi * @Date 2020/11/23 11:34 * 发送消息 */ public class UdpSenderDemo01 { public static void main(String[] args) throws Exception { DatagramSocket datagramSocket = new DatagramSocket(8888); //准备数据,控制台读取输入的数据System.in BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); while (true){ String data = bufferedReader.readLine(); byte[] bytes = data.getBytes(); DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length, new InetSocketAddress("localhost", 8889)); datagramSocket.send(packet); if (data.equals("bye")){ break; } } datagramSocket.close(); } } package com.network.chat; import java.net.DatagramPacket; import java.net.DatagramSocket; /** * @Author suaxi * @Date 2020/11/23 11:34 * UDP聊天咨询Demo(循环接收) */ public class UdpReciverDemo01 { public static void main(String[] args) throws Exception { DatagramSocket datagramSocket = new DatagramSocket(8889); while (true){ //准备接收包裹 byte[] bytes = new byte[1024]; DatagramPacket datagramPacket = new DatagramPacket(bytes, 0, bytes.length); datagramSocket.receive(datagramPacket); //阻塞式接收包裹 byte[] data = datagramPacket.getData(); String reciveData = new String(data, 0, data.length); System.out.println(reciveData); //断开连接 if (reciveData.equals("bye")){ break; } } datagramSocket.close(); } } 在线咨询,两者都是发送方,也都可以是接收方发送端package com.network.chat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketException; /** * @Author suaxi * @Date 2020/11/23 14:37 */ public class TalkSend implements Runnable{ DatagramSocket datagramSocket = null; BufferedReader bufferedReader = null; private int fromPort; private String toIP; private int toPort; public TalkSend(int fromPort, String toIP, int toPort) { this.fromPort = fromPort; this.toIP = toIP; this.toPort = toPort; try { datagramSocket = new DatagramSocket(fromPort); bufferedReader = new BufferedReader(new InputStreamReader(System.in)); } catch (SocketException e) { e.printStackTrace(); } } @Override public void run() { while (true){ try { String data = bufferedReader.readLine(); byte[] bytes = data.getBytes(); DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length, new InetSocketAddress(this.toIP, this.toPort)); datagramSocket.send(packet); if (data.equals("bye")){ break; } } catch (IOException e) { e.printStackTrace(); } } datagramSocket.close(); } } 接收端package com.network.chat; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; /** * @Author suaxi * @Date 2020/11/23 14:43 */ public class TalkRecive implements Runnable{ DatagramSocket datagramSocket = null; private int port; private String mgsFrom; public TalkRecive(int port,String mgsFrom) { this.port = port; this.mgsFrom = mgsFrom; try { datagramSocket = new DatagramSocket(port); } catch (SocketException e) { e.printStackTrace(); } } @Override public void run() { while (true){ try { //准备接收包裹 byte[] bytes = new byte[1024]; DatagramPacket datagramPacket = new DatagramPacket(bytes, 0, bytes.length); datagramSocket.receive(datagramPacket); //阻塞式接收包裹 byte[] data = datagramPacket.getData(); String reciveData = new String(data, 0, data.length); System.out.println(mgsFrom+":"+reciveData); //断开连接 if (reciveData.equals("bye")){ break; } } catch (IOException e) { e.printStackTrace(); } } datagramSocket.close(); } } 具体实现:package com.network.chat; /** * @Author suaxi * @Date 2020/11/23 14:46 */ public class TalkStudent { public static void main(String[] args) { //开启两个线程 new Thread(new TalkSend(7777,"localhost",8888)).start(); new Thread(new TalkRecive(9999,"老师")).start(); } } package com.network.chat; /** * @Author suaxi * @Date 2020/11/23 14:48 */ public class TalkTeacher { public static void main(String[] args) { new Thread(new TalkSend(7778,"localhost",9999)).start(); new Thread(new TalkRecive(8888,"学生")).start(); } }
2020年11月23日
93 阅读
0 评论
0 点赞