什么是网络编程

目录

 一、什么是网络编程?

二、协议

1.用户数据报协议(User Datagram Protocol)

2.TCP协议

TCP三次握手过程

三、实例

1.UDP通信程序

实现步骤

TCP接收数据

四、TCP协议和UDP协议的区别和联系


 一、什么是网络编程?

1.在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换
2.网络编程三要素 :IP地址 、端口、协议(TCP、UDP)

二、协议

1.用户数据报协议(User Datagram Protocol)

  • UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。
  • 简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据
  • 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议通常采用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太
    大影响。但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。
  • UDP通信原理

    UDP协议是一种不可靠的协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送、接收数据的对象,因此对于基于UDP协议的通信双方而言,没有所谓的客户端服务器的概念

2.TCP协议

  • 传输控制协议 (Transmission Control Protocol)
  • TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由
    客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。
  • 三次握手:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠第一次握手,客户端向服务器端发出连接请求,等待服务器确认
    第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求
    第三次握手,客户端再次向服务器端发送确认信息,确认连接
  • 完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛。例如上传文件、下载文件、浏览网页等 
  • TCP通信原理

    • TCP通信是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信的两端形成网络虚拟链路,一但建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。

    • JAVA基于TCP协议的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生I/O流来进行网络通信

    • JAVA客户端提供了Socket类为服务端提供了ServerSocket类

TCP三次握手过程

三、实例

1.UDP通信程序

案例需求
UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束
UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收

实现步骤

  • 发送端

    • 创建发送端

    • 自定义数据输入流

    • 创建数据包

    • 发送数据

  • 接收端

    • 创建接收端

    • 创建接收包

    • 接收数据

    • 死循环,接收数据

  • 发送端:代码实现

View Code

  • 接收端

View Code

2.TCP发送数据

  • TCP发送数据步骤

    • 创建客户端的Socket对象

      • Socket(String host, int port)

    • 获取输出流,写数据

      • OutputStream getOutputStream()

      • write()

    • 释放资源

      • void close()

  • 示例代码

    /**
     * TCP发送数据
     */
    public class MainClass {
        public static void main(String[] args) throws IOException {
            //创建客户端
            Socket socket = new Socket(InetAddress.getByName("172.16.0.54"),8089);
            //获取输出流
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write("在吗?我来了...".getBytes());
            outputStream.close();
            socket.close();
        }
    }

TCP接收数据

  • TCP接收数据步骤

    • 创建服务端Socket对象(ServerSocket)

      • ServerSocket(int port)

    • 监听客户端连接,返回一个Socket对象

      • Socket accept() 阻塞方法

    • 获取输入流,读数据,并把数据显示在控制台

      • InputStream getInputStream()

      • read()

    • 释放资源

      • void close()

  • 代码演示

  • /**
     * TCP接收数据
     */
    public class MainClass {
        public static void main(String[] args) throws IOException {
            //创建服务端
            ServerSocket serverSocket = new ServerSocket(8089);
            //侦听连接
            Socket accept = serverSocket.accept();
            //获取输入流
            InputStream inputStream = accept.getInputStream();
            byte[] bytes = new byte[1024];
            int len = inputStream.read(bytes);
            String str = new String(bytes, 0, len);
            inputStream.close();
            serverSocket.close();
            System.out.println("数据:" + str);
    
        }
    }

四、TCP协议和UDP协议的区别和联系

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一图看懂!RK3568与RK3399怎么选?

▎简介 RK3568和RK3399都是Rockchip公司的处理器,具有不同的特点和适用场景。以下是它们的主要区别和应用场景。 ▎RK3568 RK3568是新一代的高性能处理器,采用了22nm工艺,具有更高的性能和更低的功耗。它支持4K视频解码和编码,支持…

电脑如何查找重复文件?轻松揪出它!

电脑如何查找重复文件?小编每天要接触各种文档、图片等资料,很多时候下载了一些图片后,我根本记不住,下次看到不错的图片,我又会下载下来,结果就是和之前下载的图片是一样的内容。下载的重复文件多了&#…

人员定位及轨迹管理技术原理及应用领域

人员定位及轨迹管理的实现涉及多种技术和设备。例如,在GPS定位方面,使用卫星系统可以提供全球范围内的准确定位信息。然而,GPS在室内环境下的信号覆盖可能存在限制,因此在室内定位应用中,常常采用无线传感器网络&#…

第一行代码 第十一章 基于位置的服务

第11章 基于位置的服务 在本章中,我们将要学习一些全新的Android技术,这些技术有别于传统的PC或Web领域的应用技术,是只有在移动设备上才能实现的。 基于位置的服务(Location Based Service)。由于移动设备相比于电脑…

案例分享 | 纽扣电池石墨片厚度及缺陷检测

石墨片是一种导热散热材料,质轻柔软,能够轻松贴合在各种热源点,在新能源、航天、3C电子等领域应用广泛。 汽车钥匙中的纽扣电池也需要使用石墨片,石墨片会有统一的厚度标准,装配过程中表面不可避免地会出现裂纹、划痕…

Maven学习笔记(上)22版

1. 概述部分 1. 什么是 Maven? 为什么要学习Maven? 管理规模庞大的 jar 包,需要专门工具。脱离 IDE 环境执行构建操作,需要专门工具。 1、构建 Java 项目开发过程中,构建指的是使用『原材料生产产品』的过程。 原…

双目测距联合YOLOv8 项目总结

代码贴:双目测距--5 双目相机 联合 YOLOv8_爱钓鱼的歪猴的博客-CSDN博客 0、图片筛选 可以用matlab,对双目图像做个一个筛选,也就是做双目标定。 熟悉matlab的小伙伴完全可以用matlab做双目标定,我是没咋接触过不知道怎么导出标定结果&#…

如何使用ArcGIS制作气温空间分布图

本文使用ArcMap10.2,以湖北省为例,通过空间插值,制作湖北省1981-2010年20年平均气温空间分布图 树谷资料库资源大全 1 数据准备 可在中国气象数据网下载湖北省1981-2010共20年的各区站累年平均气温数据和各区站经纬度数据。打开为txt格式 在…

字节原来这么容易进,是面试官放水,还是公司实在是太缺人?

本人211非科班,之前在字节和腾讯实习过,这次其实没抱着什么特别大的希望投递,没想到字节可以再给我一次机会,还是挺开心的。 本来以为有个机会就不错啦!没想到能成功上岸,在这里要特别感谢帮我内推的同学&…

用友助力中核集团建设财务共享中心新华发电分中心,实现业财融合

企业在进行决策时需要大量的财务信息作为依据,财务共享中心的建设可以帮助企业将财务和业务分离后重新有序融合,使得决策数据更有价值,也帮助企业的管理和决策更加贴合实际。 新华水力发电有限公司(简称“新华发电”)…

单片机GD32F303RCT6 (Macos环境)开发 (二十八)—— 蓝牙透传模块HC-08 Android App开发

蓝牙透传模块HC-08 Android App开发 1、App整体开发思路 a、首先要申请权限,采用动态申请的方式,用户点击确认后方可操作蓝牙。 b、搜索蓝牙,之前的版本用startLeScan函数搜索蓝牙,虽然高版本中依然可用,但是google已…

众多行业适用的这款Lighthouse Apex Z便携粒子计数器有什么优势

Lighthouse Apex Z粒子计数器围绕易用性和可靠性进行构建。是建立在Lighthouse洁净室行业 40 多年的基于问题的学习基础上的解决方案。 采样设置 ApexZ易于使用的样品设置,可以匹配当前的sop,减少丢失位置或采样错误参数的风险。 用户管理 为了提高效…

霍尔电流传感器的注意事项及其在直流列头柜中的应用

安科瑞虞佳豪 霍尔电流传感器​注意事项 (1)电流传感器必须根据被测电流的额定有效值适当选用不同的规格的产品。被测电流长时间超额,会损坏末极功放管(指磁补偿式),一般情况下,2倍的过载电流…

word怎么转excel?一键转换并不难

在职场中,常常需要将 Word 文档转换为 Excel 表格,以便更好地管理和数据分析。本文将介绍两种 Word 转 Excel 的方法,以及如何在 Excel 中处理转换后的数据。 方法一:使用文本转换向导 使用Word的文本转换向导,将Word文…

【数据库复习】第六章 关系数据理论 2

若R∈BCNF 所有非主属性对每一个码都是完全函数依赖 所有的主属性对每一个不包含它的码,也是完全函数依赖 没有任何属性完全函数依赖于非码的任何一组属性 多值依赖 Teaching具有唯一候选码(C,T,B), 即全码, ∈3NF …

AJ-Report是一个完全开源,拖拽编辑的可视化设计工具

简介 AJ-Report是全开源的一个BI平台,酷炫大屏展示,能随时随地掌控业务动态,让每个决策都有数据支撑。     多数据源支持,内置mysql、elasticsearch、kudu驱动,支持自定义数据集省去数据接口开发,目前已支…

《Spring Guides系列学习》guide41 - guide45

要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。 接着上篇看过的gu…

Vue(路由插件)

一、介绍路由 1. 路由就是一组key-value的对关系,多个路由需要经过路由器进行管理 2. 主要应用在SPA(单页面应用) 在一个页面展示功能之间的跳转 特点: 当跳转时候不进行页面刷新路径随着变化展示区变化但是不开启新的页签 …

快来试试!免费用上GPT-4 !!!

GPT-4 简介 GPT-4是OpenAI上个月推出的最新人工智能语言模型,它可以根据给定的文本或关键词生成各种类似于人类语言甚至超越人类语言的文本,例如文章、故事、诗歌、代码、对话等。 GPT-4拥有1750亿个参数,是目前最大的语言模型之一&#xf…

2023.4月及5月最新HCIP 考试战报来袭

2023年HCIP/CCNP考试战报_微思xmws的博客-CSDN博客国内企业或国企、事业单位,华为设备普及,国内未来发展趋势,考华为认证更被认可。如果你在外企上班或有出国打算,推荐考思科。https://blog.csdn.net/XMWS_IT/article/details/129…