Java网络编程之IP,端口号,通信协议(UDP,TCP)
目录
- 1.软件架构
- 2.网络编程三要素
- 3.IP
- 1.IPV4
- 2.IPV6
- 4.端口号
- 5.协议
- 1.UDP协议
- 1.单播
- 2.组播
- 3.广播
- 2.TCP协议
- 1.三次握手
- 2.四次挥手
1.软件架构
①
C/S:客户端/服务器
在用户本地需要下载安装客户端程序,在远程有一个服务器端程序。
- 优点:画面精美,用户体验好
- 缺点:用户需要下载更新
②
B/S:浏览器/服务器
只需要一个浏览器,用户通过指定网址访问对应的服务器。
- 优点:不需要开发客户端,只需要页面+服务端,
用户不需要下载,打开浏览器就能使用- 缺点:如果应用过大,用户体验收到影响
2.网络编程三要素
IP,端口号,网络协议。
①IP:设备在网络中的地址,是唯一的标识
全称:Internet Protocol,是互联网协议地址,也称IP地址
是分配给上网设备的数字标签。
②端口号:应用程序在设备中唯一的标识
③协议:数据在网络传输中的规则,常见的协议有:UDP、TCP、HTTP、HTTPS、FTP
3.IP
1.IPV4
①全称:
Internet Protocol version 4,互联网通信协议第四版
采用32位地址长度,分成4组
使用点分十进制表示
②IPV4的
地址分类形式:
公网地址(万维网使用)和私有地址(局域网使用)。- 192.168.开头的就是私有址址,范围即为192.168.0.0–192.168.255.255,专门为组织机构内部使用,以此节省IP
③特殊ip地址:
本地回环地址:127.0.0.1或者localhost,表示本机ip。
④Windows的CMD命令:
ipconfig:查看本机IP地址
ping:检查网络是否连通
2.IPV6
全称:
Internet Protocolversion 6,互联网通信协议第六版
由于互联网的蓬勃发展,IP地址的需求量愈来愈大,而IPV4的模式下IP的总数是有限的
采用128位地址长度,分成8组。
使用冒分十六进制表示,特殊情况使用0位压缩表示法。
//获取InetAddress的对象InetAddress address = InetAddress.getByName("127.0.0.1");
4.端口号
应用程序在设备中唯一的标识。
端口号:由两个字节表示的整数,取值范围:0~65535
其中0~1023之间的端口号用于一些知名的网络服务或者应用
我们自己使用1024以上的端口号就可以了
注:一个端口号只能被一个应用程序使用。
5.协议
计算机网络中,连接和通信的规则被称为网络通信协议
OSI参考模型:世界互联协议标准,全球通信规范,单模型过于理想化,未能在因特网上进行广泛推广。TCP/IP参考模型(或TCP/IP协议): 事实上的国际标准。

1.UDP协议
- 用户数据报协议(User Datagram Protocol)
- UDP是
面向无连接通信协议。
速度快,有大小限制一次最多发送64K,数据不安全,易丢失数据.
UDP协议发送数据:
public class Send{public static void main(String[] args) throws IOException {//创建DatagramSocket对象DatagramSocket ds = new DatagramSocket();//打包数据String str = "你好!!";byte[] bytes = str.getBytes();InetAddress address = InetAddress.getByName("127.0.0.1");int port = 10006;DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);//发送数据ds.send(dp);//释放资源ds.close();}
}
UDP协议接收数据:
public class Receive{public static void main(String[] args) throws IOException {//创建DatagramSocket对象:接收时绑定的端口号要与发送时的端口保持一致DatagramSocket ds = new DatagramSocket(10086);//接收数据包byte[] bytes = new byte[1024];DatagramPacket dp = new DatagramPacket(bytes, bytes.length);ds.receive(dp);//解析数据包byte[] data = dp.getData();int length = dp.getLength();InetAddress address = dp.getAddress();int port = dp.getPort();System.out.println("接收到数据:" + new String(data, 0, length));System.out.println("该数据是从" + address + "这台电脑中的" + port + "这个端口号发出的");//释放资源ds.close();}
}
UDP的三种通信方式:
单播,组播,广播
1.单播
单播是一种UDP通信的方式,其中一台发送方的计算机向一台接收方的计算机发送数据包。
在单播通信中,发送方和接收方之间是一对一的关系,数据包只会发送到指定的接收方。
单播通信适用于点对点通信或单个目标的广播通信。
2.组播
组播是一种UDP通信的方式,其中
一台发送方的计算机可以同时向多个接收方的计算机发送数据包。
在组播通信中,发送方将数据包发送到一个特定的组播IP地址,而不是单独的目标IP地址。
所有加入该组播组的接收方都可以接收到发送方发送的数据包。
组播通信适用于需要同时向多个接收方传输相同数据的场景,如视频会议、多媒体广播等。
使用组播可以有效地减少网络带宽的消耗和系统负载。
组播地址:224.0.0.0 ~ 239.255.255.255
其中224.0.0.0 ~ 224.0.0.255为预留的组播地址
3.广播
在UDP通信中,广播是一种发送方向局域网中的
所有计算机发送数据包的方式。
发送方将数据包发送到广播IP地址,该IP地址被定义为特定的网络地址(255.255.255.255),表示发送给整个局域网内的所有计算机。
使用广播通信,发送方可以将数据包一次性发送给所有计算机,而无需指定单独的目标IP地址。
所有接收方都可以接收到发送方发送的数据包。
广播通信通常用于向局域网内的所有设备广播信息,例如在局域网内发现其他设备或进行网络设备配置。
2.TCP协议
- 传输控制协议TCP(Transmission Control Protocol)
- TCP协议是
面向连接的通信协议。
速度慢,没有大小限制,数据安全。
TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象
通信之前要保证连接已经建立
通过Socket产生IO流来进行网络通信
客户端发送数据:
public class Client {public static void main(String[] args) throws IOException {//发送数据//创建Socket对象Socket socket = new Socket("127.0.0.1", 10001);//从连接通道中获取输出流OutputStream os = socket.getOutputStream();//写出数据os.write("你好".getBytes());//释放资源os.close();socket.close();}
}
服务器接收数据:
public class Server {public static void main(String[] args) throws IOException {//接收数据//ServerSocket ss = new ServerSocket(10001);//监听用户的连接Socket socket = ss.accept();//从连接通道中获取输入流数据InputStream is = socket.getInputStream();//解决中文乱码InputStreamReader isr = new InputStreamReader(is);//使用缓冲流提高读取效率BufferedReader br = new BufferedReader(isr);int b;while ((b = br.read()) != -1) {System.out.println((char) b);}//释放资源socket.close();ss.close();}
}
1.三次握手
确保连接建立:
①客户端向服务器发出连接请求,等待服务器确认。
②服务器向客户端返回一个响应,告诉客户端收到了请求。
③客户端向服务器再次发出确认信息,连接建立。
2.四次挥手
确保连接断开,且数据处理完毕:
①客户端向服务器发出取消连接请求
②服务器向客户端返回一个响应,表示收到客户端取消请求
③服务器将最后的数据处理完毕,服务器向客户端发出确认取消信息
④客户端再次发送确认消息,连接取消
相关文章:
Java网络编程之IP,端口号,通信协议(UDP,TCP)
目录 1.软件架构2.网络编程三要素3.IP1.IPV42.IPV6 4.端口号5.协议1.UDP协议1.单播2.组播3.广播 2.TCP协议1.三次握手2.四次挥手 1.软件架构 ①C/S:客户端/服务器 在用户本地需要下载安装客户端程序,在远程有一个服务器端程序。 优点:画面精美…...
iOS和iPadOS设备启动到打开App
一、设备启动过程 启动过程每个步骤包含的组件都经 Apple 加密签名以启用完整性检查,因此只有在验证信任链后,启动才能继续; 这些组件包括引导载入程序、内核、内核扩展项和蜂窝网络基带固件; 这一安全启动链的设计旨在验证软件的…...
【INTEL(ALTERA)】如何使用 Quartus命令行导入 .qud 文件?
说明 英特尔 Quartus Prime 软件用户定义的设备文件 (.qud) 包含允许在安装 英特尔 Quartus Prime 软件之间传输设备的设备信息。 要导入 .qud 文件中定义的设备,请使用 英特尔 Quartus Prime 软件中的 quartus_cpf 命令行工具,…...
js创建服务器,以及对接口的理解和创建
// 创建服务 const app http.createServer((req, res)>{ // 设置给前端返回信息的字符编码 res.setHeader(content-type, text/html; charsetutf-8) let address req.url.split(?)[0] //首先创建一个数组,后面把它的数据放在JSON文件 let…...
【Bootstrap学习 day7】
Bootstrap按钮 按钮样式 使用.btn相关类实现 <button type"button" class"btn">基本按钮</button> <button type"button" class"btn btn-primary">主要按钮</button> <button type"button" cl…...
Zookeeper无法启动,报“Unable to load database on disk”
转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 问题描述: 测试环境部署zookeeper的服务器磁盘满了,引起服务异常,将zookeeper进程杀掉之后&…...
【Web2D/3D】CSS3的2D/3D转换、过渡、动画(第一篇)
1. 前言 本篇开始介绍Web2D和3D相关基础知识,会从CSS3的2D/3D转换、过渡、动画,讲到Canvas 2D图形绘制,再到SVG,最后到WebGL。 坐标系:左上点是坐标原点(0,0),x轴正方向向右,y轴正方向向下&…...
uView NumberBox 步进器
该组件一般用于商城购物选择物品数量的场景 注意:该输入框只能输入大于或等于0的整数 #平台差异说明 App(vue)App(nvue)H5小程序√√√√ #基本使用 通过v-model绑定value初始值,此值是双向绑定的&…...
三菱plc的点动控制循环(小灯闪烁,单控气缸循环)
以为前一段时间小编做了一个气缸定时循环的程序,根据程序有不足之处,所以小编写下这篇文章,将网络上的plc小灯控制进行总结!如果对你有帮助,不要忘了点赞收藏!如果有更加好的梯形图,欢迎评论&am…...
学习Go语言Web框架Gee总结--http.Handler(一)
学习Go语言Web框架Gee总结--http.Handler http-base/go.modhttp-base/main.gohttp-base/gee/gee.gohttp-base/gee/go.mod 网站学习来源:Gee 代码目录结构: http-base/go.mod //指定当前模块的名称为 "example" module example//指定当前模…...
react+redux+antd-mobile 之 记账本案例
1.环境搭建 //使用CRA创建项目,并安装必要依赖,包括下列基础包 //1. Redux状态管理 - reduxjs/toolkit 、 react-redux //2. 路由 - react-router-dom //3. 时间处理 - dayjs //4. class类名处理 - classnames //5. 移动端组件库 - antd-mobile //6. 请…...
Day22
Day22 一,生产者消费者模型 1.1,单个生产者单个消费者 public class Test01 {/*** 知识点:生产者消费者模型 - 单个生产者单个消费者* * 分析:* 产品类 - Phone:属性(brand,price)* 生产者线程 - Producer* 消费者线程 - Consumer* …...
Windows下linux 子系统 WSL2怎样使用usb串口(USBIPD-win4.0.0)
Windows下linux 子系统 WSL2怎样使用usb串口(USBIPD-win4.0.0) 一、widows安装二、ubuntu安装三、widows配置四、wsl配置 一、widows安装 https://github.com/dorssel/usbipd-win 直接下载最新版本的msi文件安装 二、ubuntu安装 sudo apt install lin…...
飞腾Ubantu22.04.3安装OpenNebula测试
1.概述 因OpenneBula官方镜像源只有AMD架构的镜像包不存在ARM的镜像包,借此用源码编译进行测试。 2.官网github地址 下载解压存放在服务器上: https://github.com/OpenNebula/minione/blob/master文件目录: 3.安装依赖包 sudo apt -y …...
gookit/color - Go语言命令行色彩使用库教程
gookit/color - Go语言命令行色彩使用库教程 1.安装2.基础颜色(16-color)3.256色彩/RGB风格 1.安装 go get github.com/gookit/color2.基础颜色(16-color) 提供通用的API方法:Print Printf Println Sprint Sprintf 1、例如: color.Yellow.Println(&q…...
python弹奏《起风了》
代码是很大的! 其实就是python用ctypes调用Win API import ctypes import threading import time winmm = ctypes.windll.winmmclass Scale:Rest = 0C8 = 108B7 = 107A7s = 106A7 = 105G7s = 104G7 = 103F7s = 102F7 = 101E7 = 100D7s = 99D7 = 98C7s = 97C7 = 96B6 = 95A6s…...
Linux---all
Linux常用命令: Linux常用命令-CSDN博客 Linux命令大全(超详细版)_linux命令行大全-CSDN博客Linux常用命令大全(非常全面)-CSDN博客Linux 命令大全(看这一篇就足够)_linux命令-CSDN博客Linux常用命令大全——赶紧收藏…...
前端中级算法题
前端中级算法题 反转字符串 编写一个函数,接受一个字符串作为输入,并返回反转后的字符串。 示例: function reverseString(str) {return str.split().reverse().join(); }reverseString(hello); // 输出: olleh 找出数组中的最大值 编写一个函…...
Ant Design Vue 编译后的网页特点是什么,怎么确认他是用的前端 Ant Design Vue 技术栈的呢?
Ant Design Vue 是一个前端 UI 框架,使用 Vue.js 构建。它包含了大量的预设样式和组件,如按钮、表单、表格等,可以帮助开发者快速构建出优雅且功能丰富的网页。但是,要确定一个编译后的网页是否使用了 Ant Design Vue,…...
python | PYTHON正则表达式
操作符说明实例.表示任何单个字符[]字符集,对单个字符给出取值范围[abc]表示a、b、c,[a-z]表示a到z单个字符[^ ]非字符集,对单个字符给出排除范围[^abc]表示非a或b或c的单个字符*前一个字符0次或无限次扩充abc* 表示ab,abc&#x…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
