4月16号总结

java学习

网络编程

1.网络分层

网络分层是将网络通信划分为不同的逻辑层次,每一层负责特定的功能,从而实现网络通信的模块化和标准化。常用的网络分层模型包括OSI(开放系统互联)模型和TCP/IP模型。

特点和作用:

  • 分层模型使得网络协议更易于设计、实现和维护,每一层都有明确定义的功能和接口。
  • 分层模型提供了标准化的接口和协议,不同厂商和组织之间可以基于共同的标准进行通信和互操作。
  • 每一层的功能清晰划分,有助于故障排除和性能优化。

总的来说,网络分层模型是一种组织网络通信的方式,将复杂的通信过程分解为多个层次,使得网络设计和管理更加简单和可靠。

2.网络编程三要素

2.1 IP地址

IP地址相当于每台计算机的标识符,也就是“名字”,如果想要实现计算机的网络通信,那么IP地址就是帮助你找到你想要通信的计算机的方式。

IP地址分类为IP4,和IP6。

IP4又四个字节组成,32位,大约可以表示42亿台计算机,但是随着电子产品的增多,IP4分配的地址明显是不够的,那么我们就需要一种能分配更多地址的方式,那就是IP6。

IP6有16字节,128位,号称可以为地球的每一粒沙子命名。

如果想要知道自己电脑的IP地址,可以Win+R打开黑窗口,输入ipconfig就可以查看自己电脑的IP4和IP6地址(一些新的设备没有IP4地址)。

2.2 端口

如果说IP地址是计算机的标识,那么端口号就是应用程序的标识,没有端口号,两台计算机之间也不能实现网络通信。

端口分类:

公认端口:0~1023。被预先定义的服务通信占用(如:HTTP占用端口80,FTP占用端口21,Telnet占用端口23)
注册端口:1024~49151。分配给用户进程或应用程序。(如:Tomcat占用端口8080,MySQL占用端口3306,Oracle占用端口1521等)。(我们后面开发的程序可以使用这个范围的端口号)
动态/私有端口:49152~65535。
端口号与IP地址的组合得出一个网络套接字:Socket。

2.3 协议

网络通信协议是一组规则和约定,用于在计算机网络中进行通信和数据交换。这些协议定义了数据如何在网络中传输、路由和处理。常见的网络通信协议包括:

  1. TCP(传输控制协议):提供可靠的、面向连接的通信服务,确保数据的顺序传输和不丢失。常用于需要可靠数据传输的应用,如网页浏览、文件传输等。

  2. UDP(用户数据报协议):提供无连接的通信服务,数据传输不可靠,不保证数据的顺序和完整性。常用于实时应用,如音视频传输、在线游戏等。

  3. IP(互联网协议):定义了计算机在网络上的唯一标识(IP地址),以及数据包的格式和路由规则。IPv4和IPv6是目前广泛使用的两个版本。

  4. HTTP(超文本传输协议):用于在客户端和服务器之间传输超文本文档,是万维网的核心协议。通过HTTP,用户可以访问网页、发送和接收电子邮件等。

  5. HTTPS(超文本传输安全协议):是HTTP的安全版本,通过SSL/TLS加密协议保护数据传输的安全性和完整性。

  6. FTP(文件传输协议):用于在网络上传输文件,支持文件上传、下载和管理。

  7. SMTP(简单邮件传输协议):用于在网络上传输电子邮件,定义了电子邮件的格式和传输规则。

  8. POP3(邮局协议第3版)IMAP(互联网消息访问协议):用于接收和管理电子邮件的协议,POP3将邮件下载到本地客户端,而IMAP在服务器上管理邮件,客户端只是远程访问邮件。

  9. DNS(域名系统):将域名映射到IP地址的分布式数据库系统,用于解析域名和进行网络寻址。

  10. ARP(地址解析协议):将IP地址解析为物理地址(MAC地址)的协议,用于在局域网中进行通信。

这些网络通信协议共同构成了计算机网络的基础,实现了各种应用和服务之间的通信和交互。

这里为我们着重讲UDP通信TCP通信

3.UDP

从上面图片我们可以看到,使用UDP通信时,不需要与向接收的一方提前建立联系,直接发送信息,信息是否传送到了,不能得知,如果接收信息的一方没在线,发送信息的一方仍然可以发送信息,所以信息是否安全发送不能保证,但是没有了事先的建立联系,通信效率也提高了不少。

实现UDP通信,主要使用到下面方法。

下面我们用代码实现一下。

用户端:

public class Client {public static void main(String[] args) {//1、创建客户端,发消息的人try {DatagramSocket socket =new DatagramSocket();//2、创建包含信息的包Scanner scan=new Scanner(System.in);while (true) {String msg=scan.nextLine();//输入字符串byte[] bytes=msg.getBytes();//转换成字节数组if("exit".equals(msg))//退出判断{socket.close();break;}//将信息包装DatagramPacket packet=new DatagramPacket(bytes,bytes.length, InetAddress.getLocalHost(),6666);//发送信息包socket.send(packet);}} catch (Exception e) {//捕获异常throw new RuntimeException(e);}}
}

服务端:

public class Server {public static void main(String[] args) {try {//1。创建服务端对象DatagramSocket socket =new DatagramSocket(6666);//指定端口号//2,创建一个数据包对象,用于接受数据byte[] buffer =new byte[1024*64];DatagramPacket packet =new DatagramPacket(buffer,buffer.length);while (true) {//接收信息包socket.receive(packet);int len=packet.getLength();String s1=new String(buffer,0,len);System.out.println(s1);//打印信息}} catch (Exception e) {throw new RuntimeException(e);}}
}

4.TCP

发送信息:

接收信息:

下面我们用多线程实现一个服务端连接多个用户端,并且可以实现多发多收。

服务端:

package com.lenrn.tcp;import java.io.DataInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;public class Server {public static void main(String[] args) throws Exception {//1.实例化一个serversocket对象ServerSocket serverSocket=new ServerSocket(6886);//2.等待客户端连接,程序暂停,等待客户端的连接请求System.out.println("服务端启动");while (true) {//多次与新用户连接Socket socket= serverSocket.accept();System.out.println("已经与"+socket.getRemoteSocketAddress()+"建立连接");//子线程new ServerReadThread(socket).start();}}
}class ServerReadThread extends Thread{private Socket socket;public ServerReadThread(Socket socket){this.socket=socket;}@Overridepublic void run() {try {//3.从socket对象中得到一个字节输入流、InputStream is = socket.getInputStream();//4.将低级的字节输入流包装成数据输入流DataInputStream dis=new DataInputStream(is);while (true){String rs= dis.readUTF();System.out.println(rs);}} catch (Exception e) {System.out.println(socket.getRemoteSocketAddress()+"下线了");}}
}

用户端:

用户端多开需要勾选选项。

勾选应用即可。

package com.lenrn.tcp;import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;public class Client {public static void main(String[] args) throws Exception {//1.创建一个Socket对象,同时请求连接服务端Socket socket=new Socket("127.0.0.1",6886);//2.从socket管道中得到一个字节输出流OutputStream os=socket.getOutputStream();//3.将低级的字节输出流包装成数据输出流DataOutputStream dos=new DataOutputStream(os);//4.写数据出去Scanner scan=new Scanner(System.in);while (true) {String msg = socket.getRemoteSocketAddress().toString();msg+=": ";String k=scan.nextLine();msg+=k;if("exit".equals(k)){System.out.println("退出成功");dos.close();socket.close();break;}dos.writeUTF(msg);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

origin绘图操作合集

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、图例去掉边框二、柱状图单独选中某一柱子修改颜色,柱状图中设置一个柱子的方法 提示:以下是本篇文章正文内容,下面案例可供参…

Java开发从入门到精通(二十):Java的面向对象编程OOP:IO流中的转换流、打印流、数据流、序列流、IO框架

Java大数据开发和安全开发 (一)Java的IO流文件读写1.1 转换流1.1.1 InputStreamReader字符输入转换流1.1.1 OutputStreamWriter字符输出转换流 1.2 打印流1.2.1 PrintStream打印流1.2.2 PrintWriter打印流1.2.3 PrintStream和PrintWriter的区别1.2.4 打印…

获取淘宝京东商品详情API接口返回数据解析说明(可测试,批量获取)

获取淘宝和京东的商品详情API接口返回数据并解析通常需要遵循以下几个步骤: 淘宝商品详情API 淘宝的API接口通常对商家和合作伙伴开放,并且需要经过严格的申请和审核流程。普通用户或未经授权的开发者通常无法直接访问淘宝的商品详情API。 如果你已经…

Innodb之redo日志

Innodb引擎执行流程 redo log ​ MySQL中的redo log(重做日志)是实现WAL(预写式日志)技术的关键组件,用于确保事务的持久性和数据库的crash-safe能力。借用《孔乙己》中酒店掌柜使用粉板记录赊账的故事,…

2024.4.16

三个按键的中断 do_irq.c #include "mykey.h" extern void printf(const char *fmt, ...); unsigned int i 0; void do_irq(void) {//获取中断号unsigned int irqno (GICC->IAR&0x3ff);switch (irqno){case 99://中断处理逻辑printf("KEY1_INTC\n&q…

jenkins构建微信小程序并展示二维码

测试小程序的过程中,很多都是在回头和前端开发说一句,兄弟帮我打一个测试版本的测试码,开发有时间的情况下还好,就直接协助了,但是很多时候他们只修复了其中几个bug,其他需要修复的bug代码正在编写&#xf…

健身管理小程序|基于微信开发健身管理小程序的系统设计与实现(源码+数据库+文档)

健身管理小程序目录 基于微信开发健身管理小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 小程序端: 后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码…

策略模式(知识点)——设计模式学习笔记

文章目录 0 概念1 使用场景2 优缺点2.1 优点2.2 缺点 3 实现方式4 和其他模式的区别5 具体例子实现5.1 实现代码 0 概念 定义:定义一个算法族,并分别封装起来。策略让算法的变化独立于它的客户(这样就可在不修改上下文代码或其他策略的情况下…

前端三件套学习笔记(持更)

HTML CSS 1、HTML&#xff0c;CSS&#xff0c;JS区别 HTML--结构 CSS--表现 JavaScript--行为 2、HTML5 中新增 1&#xff09;语义化标签 <header>、<main>页面主要内容、<aside>侧边栏、<footer>、<nav>、<article> 加载页面一块…

Redis 缓存预热、预热数据选取策略、缓存保温、性能边界

缓存预热 热点数据预热&#xff1a;根据业务分析或统计数据&#xff0c;确定热点数据&#xff08;经常被访问的数据&#xff09;&#xff0c;并将其提前加载到Redis缓存中。可以根据访问频率、访问量或其他业务指标来确定热点数据。定时预热&#xff1a;可以设置定时任务&…

QT 串口助手 学习制作记录

QT 串口助手qt 学习制作记录 参考教程&#xff1a;​​​​​​QT初体验&#xff1a;手把手带你写一个自己的串口助手_qt设计串口助手的流程图-CSDN博客 Qt之串口编程&#xff08;添加QSerialPort模块&#xff09;_如何安装 qt串口模块教程-CSDN博客 串口调试助手&#xff1…

纯golang开发的mqtt server

Mochi-MQTT Server github地址&#xff1a;https://github.com/mochi-mqtt/server Mochi-MQTT 是一个完全兼容的、可嵌入的高性能 Go MQTT v5&#xff08;以及 v3.1.1&#xff09;中间件/服务器。 Mochi MQTT 是一个完全兼容 MQTT v5 的可嵌入的中间件/服务器&#xff0c;完…

【C语言】每日一题,快速提升(3)!

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 题目&#xff1a;杨辉三角 在屏幕上打印杨辉三角。 1 1 1 1 2 1 1 3 3 1 ……......... 解答&#xff1a; 按照题设的场景&#xff0c;能发现数字规律为&#xff1…

Flink学习(六)-容错处理

前言 Flink 是通过状态快照实现容错处理 一、State Backends 由 Flink 管理的 keyed state 是一种分片的键/值存储&#xff0c;每个 keyed state 的工作副本都保存在负责该键的 taskmanager 本地中。 一种基于 RocksDB 内嵌 key/value 存储将其工作状态保存在磁盘上&#x…

【MogDB】在ORACLE和MogDB中查看存储过程出参游标数据的方式

一、前言 使用ORACLE作为数据库的应用软件中&#xff0c;偶尔会遇到使用游标作为出参的存储过程&#xff0c;这种存储过程迁移到MogDB并不需要进行改造&#xff0c;但是在开发这样的存储过程时&#xff0c;开发人员偶尔会想要在数据库中测试执行一下&#xff0c;看看游标中的数…

项目5-博客系统1(准备工作+博客列表+博客详情页)

1.创建项目 导入以下依赖 2.项目介绍 使⽤SSM框架实现⼀个简单的博客系统 共5个页面 2.1 前端页面展示 2.1.1 用户登录 2.1.2 博客发表页 2.1.3 博客编辑页 2.1.4 博客列表页 2.1.5博客详情页 2.2 功能描述: ⽤⼾登录成功后, 可以查看所有⼈的博客. 点击 <<查看全⽂…

Big Data and Cognitive Computing (IF=3.7) 计算机/大数据/人工智能期刊投稿

Special Issue: Artificial Cognitive Systems for Computer Vision 欢迎计算机/大数据/人工智能/计算机视觉相关工作的投稿&#xff01; 影响因子3.7&#xff0c;截止时间2024年12月31日 投稿咨询&#xff1a;lqyan18fudan.edu.cn 投稿网址&#xff1a;https://www.mdpi.com/j…

2024 计算机毕业设计之SpringBoot+Vue项目合集(源码+L文+PPT)

各位朋友大家好&#xff0c;有幸与屏幕前你们相识&#xff0c;博主现已经搬砖9年&#xff0c;趁着头发还充裕&#xff0c;希望给大家提供一些编程领域的帮助&#xff0c;深知计算机毕业生这个阶段的崩溃与闹心&#xff0c;让我们共同交流进步。 博主给大家列举了项目合集&#…

如何在PPT中获得网页般的互动效果

如何在PPT中获得网页般的互动效果 效果可以看视频 PPT中插入网页有互动效果 当然了&#xff0c;获得网页般的互动效果&#xff0c;最简单的方法就是在 PPT 中插入网页呀。 那么如何插入呢&#xff1f; 接下来为你讲解如何获得&#xff08;此方法在 PowerPoint中行得通&#…