首页
统计
关于
Search
1
Sealos3.0离线部署K8s集群
1,086 阅读
2
类的加载
742 阅读
3
Spring Cloud OAuth2.0
726 阅读
4
SpringBoot自动装配原理
691 阅读
5
集合不安全问题
587 阅读
笔记
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
蘇阿細
累计撰写
389
篇文章
累计收到
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
页面
统计
关于
搜索到
4
篇与
的结果
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 点赞
2020-11-22
通信协议
网络通信协议:速率,传输码率,代码结构,传输控制……TCP/IP协议簇(实际上是一组协议)TCP:用户传输协议UDP:用户数据报协议TCP与UDP对比:TCP:连接、稳定三次握手,四次挥手最少需要三次,保证稳定链接 A:咋地! B:干啥? A:干一架 A:我要走了 B:你要走了吗 B:你真的要走了吗 A:走了客户端、服务端传输完成,释放连接。效率低UDP:不连接,不稳定客户端、服务端:没有明确的界限不管有没有准备好,都可以发给你DDOS(饱和攻击)TCP客户端:1、连接服务器socket2、发送消息package com.network.lesson02; import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; /** * @Author suaxi * @Date 2020/11/20 17:37 * 客户端 */ public class TcpClientDemo01 { public static void main(String[] args) { Socket socket = null; OutputStream os = null; //1、要知道服务器的地址、端口号 try { InetAddress serverIp = InetAddress.getByName("127.0.0.1"); int port = 8888; //2、创建一个socke连接 socket = new Socket(serverIp, port); //3、发送消息、IO流 os = socket.getOutputStream(); os.write("故乡的樱花开了".getBytes()); } catch (Exception e) { e.printStackTrace(); }finally { if (os!=null){ try { os.close(); } catch (IOException e) { e.printStackTrace(); } } if (socket!=null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } } 服务器1、建立服务端口ServerSocket2、等待用户连接3、接收客户端发送的消息(管道流)package com.network.lesson02; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; /** * @Author suaxi * @Date 2020/11/20 17:38 * 服务端 */ public class TcpServerDemo01 { public static void main(String[] args) { ServerSocket serverSocket = null; Socket socket = null; InputStream is = null; ByteArrayOutputStream baos = null; try { //1、建立服务器地址 serverSocket = new ServerSocket(8888); while (true){ //2、等待客户端连接 socket = serverSocket.accept(); //3、读取客户端消息 is = socket.getInputStream(); //管道流 baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length; while ((length=is.read(buffer))!=-1){ baos.write(buffer,0,length); } System.out.println(baos); } } catch (IOException e) { e.printStackTrace(); }finally { if (baos!=null){ try { baos.close(); } catch (IOException e) { e.printStackTrace(); } } if (is!=null){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if (socket!=null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } if (serverSocket!=null){ try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } } } 文件上传服务端package com.network.lesson02; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /** * @Author suaxi * @Date 2020/11/22 11:26 * 文件上传服务端 */ public class TcpServerDemo02 { public static void main(String[] args) throws IOException { //1、创建服务 ServerSocket serverSocket = new ServerSocket(8889); //2、监听客户端的连接 Socket socket = serverSocket.accept();//阻塞式监听,会一直等待客户端连接 //3、获取输入流 InputStream is = socket.getInputStream(); //4、文件输出 FileOutputStream fileOutputStream = new FileOutputStream("recive.jpg"); byte[] bytes = new byte[1024]; int length; while ((length=is.read(bytes))!=-1){ fileOutputStream.write(bytes,0,length); } //通知客户端文件接收完毕 OutputStream os = socket.getOutputStream(); os.write("文件上传成功!".getBytes()); //5、关闭资源 fileOutputStream.close(); is.close(); socket.close(); serverSocket.close(); } } 客户端package com.network.lesson02; import java.io.*; import java.net.InetAddress; import java.net.Socket; /** * @Author suaxi * @Date 2020/11/22 11:26 * 文件上传客户端 */ public class TcpClientDemo02 { public static void main(String[] args) throws Exception { //1、创建一个socket连接 Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),8889); //2、创建一个输出流 OutputStream os = socket.getOutputStream(); //3、读取文件 FileInputStream fileInputStream = new FileInputStream(new File("test.jpg")); //4、写出文件 byte[] bytes1 = new byte[1024]; int length1; while((length1=fileInputStream.read(bytes1))!=-1){ os.write(bytes1,0,length1); } //通知服务器已经上传完毕 socket.shutdownOutput(); //确定服务器接收完毕,才断开连接 InputStream inputStream = socket.getInputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] bytes2 = new byte[1024]; int length2; while ((length2=inputStream.read(bytes2))!=-1){ baos.write(bytes2,0,length2); } System.out.println(baos.toString()); //5、关闭资源 baos.close(); inputStream.close(); fileInputStream.close(); os.close(); socket.close(); } }
2020年11月22日
211 阅读
0 评论
0 点赞
2020-11-20
端口
端口表示计算机上的一个程序进程不同的进程有不同的端口号,用来区分软件规定范围0~65535(TCP/UDP的规范是一样的)单个协议下端口号不能冲突端口分类:公有端口0~1023HTTP:80HTTPS:443FTP:21SSH:22Telent:23程序注册端口:1024~49151,分配给用户或者程序Tomacat:8080MySQL:3306Oracle:1521RDP:3389动态、私有:49152~65535netstat -ano #查看所有的端口 netstat -ano|findstr "5900" #查看指定的端口 tasklist|findstr "8696" #查看指定端口的进程package com.network.lesson01; import java.net.InetSocketAddress; /** * @Author suaxi * @Date 2020/11/20 17:21 */ public class TestInetSocketAddress { public static void main(String[] args) { InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1", 8080); System.out.println(inetSocketAddress); System.out.println(inetSocketAddress.getAddress()); System.out.println(inetSocketAddress.getHostName()); //地址 System.out.println(inetSocketAddress.getPort()); //端口 } }
2020年11月20日
157 阅读
0 评论
0 点赞
2020-11-20
IP
ip地址:InetAddress唯一定位一台网络上的计算机127.0.0.1:本机localhostip地址的分类ipv4/ipv6IPV4:4个字节组成,0~255,约42亿个IPV6:128位,8个无符号整数,例如240e:1234:abcd:0010:2b58:9900:add2:b156公网(互联网)--私网(局域网)ABCD段package com.network.lesson01; import java.net.InetAddress; import java.net.UnknownHostException; /** * @Author suaxi * @Date 2020/11/20 16:54 */ public class TestInetAddress { public static void main(String[] args) { try { //查询本机地址 InetAddress host1 = InetAddress.getByName("localhost"); System.out.println(host1); //查询网站ip地址 InetAddress host2 = InetAddress.getByName("www.baidu.com"); System.out.println(host2); //常用方法 System.out.println(host2.getAddress()); System.out.println(host2.getCanonicalHostName()); //规范的名字 System.out.println(host2.getHostAddress()); //ip System.out.println(host2.getHostName()); //域名或自己电脑的名字 } catch (UnknownHostException e) { e.printStackTrace(); } } }
2020年11月20日
76 阅读
0 评论
0 点赞