Java基础之网络编程介绍详尽笔记

news2024/11/18 0:14:53

目录

  • 初识网络编程
  • 网络传输模型
  • 网络传输协议
  • UDP
    • UDP通信程序
    • UDP的三种通信方式
  • TCP
    • TCP通信协议
    • TCP的三次握手
    • TCP的四次挥手

初识网络编程

网络编程三要素

IP

  • 设备在网络中的地址,是唯一的标识。

端口号

  • 应用程序在设备中唯一的标识。

协议

  • 数据在网络中传输的规则,常见的协议有UDP、TCP、http、https、ftp。

InetAddress类的使用api接口

在这里插入图片描述


网络传输模型

  • OSI参考模型:世界互联协议标准,全球通信规范,单模型过于理想化,未能在因特网上进行广泛推广
  • TCP/IP参考模型(或TCP/IP协议):事实上的国际标准。

在这里插入图片描述


TCP/IP四层模型

在这里插入图片描述


网络传输协议

计算机网络中,连接和通信的规则被称为网络通信协议

UDP协议

  • 用户数据报协议(User Datagram Protocol)UDP是面向无连接通信协议。
  • 速度快,有大小限制一次最多发送64K,数据不安全,易丢失

UDP协议不管发送接收两方是否已经连接成功,它只管发送


TCP协议

  • 传输控制协议TCP(Transmission Control Protocol)TCP协议是面向连接的通信协议。
  • 速度慢,没有大小限制,数据安全。

TCP协议会先确认发送方和接收方二者是否成功连接,再进行发送


UDP

UDP通信程序

发送数据

    public static void main(String[] args) throws IOException {
        //发送数据

        //1.创建DatagramSocket对象
        DatagramSocket ds = new DatagramSocket();

        //2.打包数据
        String str = "hello world!";

        byte[] bytes = str.getBytes();
        InetAddress address = InetAddress.getByName("127.0.0.1");
        int port = 10086;//指定发送到哪个端口

        DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, port);

        //3.发送数据
        ds.send(packet);

        //4.释放资源
        ds.close();
    }

接收数据

    public static void main(String[] args) throws IOException {
        //1.创建DatagramSocket对象
        DatagramSocket ds = new DatagramSocket(10086);

        //2.接收数据包
        byte[] bytes = new byte[1024];//定义接收数据的数组
        //定义接收数据的容器
        DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
        ds.receive(packet);//该方法是阻塞的,程序执行到这一步的时候,会在这里死等等发送端发送消息

        //3.解析数据包
        //就是获取发送时封装的内容
        byte[] data = packet.getData();
        int len = packet.getLength();
        InetAddress address = packet.getAddress();
        int port = packet.getPort();

        System.out.println("接收该数据"+ new String(data,0,len ));
        System.out.println("该数据是从"+address+"这台电脑的"+port+"这个端口发出的");

        //4.关闭资源
        ds.close();
    }

注意:要先运行接收数据的代码,再运行发送数据的代码,否则,发送的数据接收不到


UDP的三种通信方式

单播
一对一传输数据,发送方和接收方一 一对应


组播
接收方为一组,给一组电脑发送信息
在这里插入图片描述


示例如下

发送端

在这里插入图片描述

接收端

在这里插入图片描述


广播
给局域网中的所有电脑发送数据,广播地址是UDP独有的
在这里插入图片描述


TCP

TCP通信协议

TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象通信之前要保证连接已经建立

通过Socket产生IO流来进行网络通信

下面是idea中使用TCP做通讯实现的代码

客户端

    public static void main(String[] args) throws IOException {
        //TCP协议发送数据

        //1.创建Socket对象
        //细节:在创建对象的同时会连接服务端
        //     如果连接不上,代码会报错
        Socket socket = new Socket("127.0.0.1",10086);

        //2.从连接通道中获取输出流
        OutputStream os = socket.getOutputStream();
        //写出数据
        os.write("hello".getBytes());

        //3.释放资源
        os.close();
        socket.close();
    }

服务端

    public static void main(String[] args) throws IOException {
        //TCP协议, 接收数据

        //1.创建对象ServerSocker
        ServerSocket ss = new ServerSocket(10000);

        //2.监听客户端的连接
        Socket socket = ss.accept();

        //3.从连接通道中获取输入流读取数据
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        int b;
        while ((b = br.read()) != -1){
            System.out.print((char) b);
        }

        //4.释放资源
        socket.close();
        ss.close();
    }

TCP的三次握手

确保连接建立

在这里插入图片描述


TCP的四次挥手

确保连接断开,且数据处理完毕,这就是为什么TCP协议可靠的原因

在这里插入图片描述

这里是为了确认服务端是否已经将数据处理完毕,处理完才会确认断开连接

在这里插入图片描述
在这里插入图片描述


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

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

相关文章

童年回忆--扫雷(包括标记功能和递归展开)--万字讲解让你学会扫雷制作

魔王的介绍:😶‍🌫️一名双非本科大一小白。魔王的目标:🤯努力赶上周围卷王的脚步。魔王的主页:🔥🔥🔥大魔王.🔥🔥🔥 ❤️‍&#x1…

第九章:创建用户和用户权限

Windows:创建用户:第一种方法创建用户:先点右上角的工具,然后点击AD用户和计算机双击skills.com打开目录,再双击Users,进入文件夹中在右框中右击空白处,新建用户填充好用户信息后点击下一步然后…

Sophos防火墙日志管理

每天,Sophos防火墙都会生成大量的syslog数据,很难独自监控它们。借助EventLog Analyzer,您可以存档系统日志以满足合规性要求,并进行彻底的取证调查,以在发生任何问题(例如网络入侵)时获得宝贵的…

MySQL用户管理

文章目录MySQL用户管理用户用户信息创建用户修改用户密码删除用户数据库的权限MySQL中的权限给用户授权回收权限MySQL用户管理 与Linux操作系统类似,MySQL中也有超级用户和普通用户之分。如果一个用户只需要访问MySQL中的某一个数据库,甚至数据库中的某…

Unity 资源插件 Agents Navigation 3.1.1.unitypackage

Unity 插件 Agents Navigation 3.1.1.unitypackage 描述 这个软件包包括高性能、模块化和可扩展的代理导航。它是以 DOTS 为核心开发的,因此充分利用了 Unity 的最新技术栈,如 SIMD 数学、Jobs、Burst 编译器和 EntityComponentSystem。此外,…

【ASP.NET】原生JavaScript加Asp.net实现多图片上传

记录一下,Javascript加asp.net实现多文件上传的方法。首先看一下要实现的功能,图片比文字描述更直观。 一、前台代码 前台代码代码分为三个部分,一是HTML代码,二是Style样式代码,三是Javascript代码。 1.html代码 …

亿级高并发电商项目-- 实战篇 --万达商城项目 八(安装FastDFS、安装Nginx、文件服务模块、文件上传功能、商品功能与秒杀商品等功能)

专栏:高并发---分布式项目 👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支…

C语言进阶——自定义类型:枚举、联合

🌇个人主页:_麦麦_ 📚今日名言:如果不去遍历世界,我们就不知道什么是我们精神和情感的寄托,但我们一旦遍历了世界,却发现我们再也无法回到那美好的地方去了。当我们开始寻求,我们就已…

2023春招java面试题及答案

2023春招java面试题及答案总结1.以下Dubbo服务负载均衡策略中,哪一个策略的功能是相同参数的请求总是发到同一个提供者()2.如下代码:请问编译运行的结果是什么?3.给出如下代码:请问编译运行的结果是什么&am…

英国访问学者邀请函范例

下面是知识人网访问学者老师分享的一个英国访问学者邀请函范例,邀请函不要复杂,提供签证官想看到的东西即可。Chen xxxDate of Birth: September 1th , 19xxSchool of Computer and InformationXXXX UniversityNo.X South RoadXXX city, XXX Province, 1…

1.Unity之Shader新手入门

Unity Shader着色器的基本概念如何使用Unity Shader着色器示例:如何使用Unity Shader着色器创建复杂的效果总结 什么是Unity中的Shader着色器? Shader着色器是用来控制物体外观的编程代码,它可以改变物体的颜色、纹理、光照、凹凸等&#xf…

智慧校园综合解决方案

在网络和信息技术的普及和国家教育信息化建设的推动下,以计算机网络为基础,以信息和知识资源的共享为手段,强调合作、分享、传承精神的网络化、数字化、智能化有机结合的新型教育、学习和研究的教育环境建设显得尤为重要。 智慧校园是利用信息…

leaflet 纯CSS的marker标记,不用图片来表示(072)

第072个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中使用纯CSS来打造marker的标记。这里用到的是L.divIcon来引用CSS来构造新icon,然后在marker的属性中引用。 这里必须要注意的是css需要是全局性质的,不能被scoped转义为其他随机的css。 直接复制下面的 v…

【SPSS】频数分析和基本描述统计量详细操作教程(附实战案例)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

记录--『uni-app、小程序』蓝牙连接、读写数据全过程

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本文简介 这是一次真实的 蓝牙收发数据 的全过程讲解。 本文使用 uni-app Vue3 的方式进行开发,以手机app的方式运行(微信小程序同样可行)。 uni-app 提供了 蓝牙 和 低功耗蓝牙 的 api &…

深圳硬件黑客松活动,开放报名!

开源社KAIYUANSHE近期微信公众号订阅功能做调整啦!没有被星标的账号在信息流里可能不显示大图了!快星标⭐我们,就可以及时看到发布的文章啦!STEP01 点击右上角标志STEP02 点击【设为星标】近年来,创客文化越来越受到人…

figma通过什么方式可以转换为sketch

Figma 如何转为 Sketch 文件?巧了,刚好我对这个问题很熟悉,作为一个使用过 Figma 也使用过 Sketch 的人来说,我还蛮希望两个软件能够互相打通的,不过不管是 Figma 也好还是 Sketch 也好,两个设计软件&#…

含泪吐槽学C++的血与泪

含泪吐槽学C的血与泪 C在各位程序猿眼里并不陌生,但凡学习过C的人,都极有可能被它曾经蹂躏得不要不要的,而我就是其中一个。 文章目录1 我和C的那段血泪史2 再次与C重逢3 我想和你再来一次4 柳暗花明友情推荐5 福利赠书活动6 一个彩蛋大家好&…

FLUXNET数据下载具体步骤

一、FLUXNET数据介绍 全球长期通量观测网络概念最早起源于1993年,由国际地圈-生物圈计划首次提出,国际科学委员会在1995年的La Thuile研讨会上对此概念进行正式讨论,在这次会议上,通量观测委员会讨论了进行长期通量观测的可能性以…

KubeSphere

文章目录一、概述二、最小化安装 KubeSphere2.1 前提2.2 安装 nfs 服务器一、概述 KubeSphere是在Kubernetes之上构建的以应用为中心的企业级分布式容器平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时&#…