Day23——知识点总结_九灬八的博客-程序员ITS304

1. 网络编程概述

1.1 C/S和B/S

C/S 
	客户端 服务器软件结构
	服务提供商给予用户服务需要准备的内容
		1. 各大平台的客户端
			Android iOS PC Windows Linux macOS
			QQ 微信 淘宝 JD 剑与远征
		2. 服务器提供服务
	软件更新:
		LOL服务器版本更新,同时本地软件也要进行更新操作。这个操作非常耗时。
		热更新
		
B/S
	浏览器 服务器软件结构
	服务提供商只要提供数据服务就OK,以及前端数据展示方式
		1. 浏览器提供商非常非常多
			谷歌,火狐,欧朋,Safari,Edge
		2. 服务器提供服务
	软件更新:
		服务器更新数据,浏览器刷新就ok了

1.2 网络通信协议

协议:
	protocol协议
	网络通信协议是要求双方传递数据的计算机必须遵守的,按照对应的网络传输协议,才可以进入数据的交互和传递。

目前网络段数据传输比较常见的协议:
	UDP TCP/IP

1.3 UDP和TCP/IP区别

UDP
	1. 面向无连接,数据传递不算特别安全
	2. 因为面向无连接,传输速度快
	3. 因为面向无连接,数据传递存在丢包问题
	4. UDP没有客户端和服务器区别,都可以作为发送端和接收端
	UDP协议使用场景
		直播,网络游戏

TCP/IP
	1. 面向连接,数据传递较为安全
	2. 因为面向连接,所有传递速度较慢
	3. 面向连接,数据传递有保障
	4. TCP/IP协议是有明确的服务器和客户端概念
	TCP/IP协议使用场景
		客户端登陆,数据下载,文件传输

1.4 网络编程的三要素

1. 协议
	两个在于网络情况下的计算机数据传递,都需要对应的协议来完成。

2. IP地址
	Internet Protocol Address
	当前计算机在网络中的一个地址编号,类似于手机号号码
IP地址有IPv4协议和IPv6协议
IPv4是一个32位的二进制数,通常展示效果是a.b.c.d 例如 192.168.1.1
	a.b.c.d 各代表0 ~ 255的数字,目前已经消耗殆尽 42亿个
IPv6
	IPv6是能够保证地球上的每一粒沙子都有一个IP地址。
	128位地址长度,16字节一组
	8组 0x0 ~ 0xFFFF

3. 端口号
	端口号是当前应用程序在计算机中的一个编号。可以让计算机明确知道,当前的数据是给予那一个程序使用,或者数据从哪一个程序出现的。
	端口号是一个short类型 0 ~ 65535
	0~1024不能用于自定义端口号使用,特定的系统端口号

2. IP类

SUN公司提供给开发使用的IP地址类
	InetAddress
常用方法:
	InetAddress getLocalhost();
		获取本机IP地址类对象
	InetAddress getByName(String str);
		根据指定的主机名获取对应的IP地址对象
	InetAddress[] getAllByName(String str);
		获取指定主机名,或者域名对应的所有IP地址类对象

3. UDP协议数据传输

3.1 UDP数据传输方式

User Datagram Protocol 
	数据传递采用数据包方式传递,所有的数据要进行打包操作,并且没有对应的客户端服务器概念,有且只有发送段和接收端
	
Socket 套接字
	数据需要进行传递操作,在数据传递的两台计算机当中必须有对应的Socket。这里采用UDP协议,那么必须有一个UDP协议的Socket
	DatagramSocket();
		创建一个发送端UDP协议Socket对象
	DatagramSocket(int port);
		创建一个接收端UDP协议的Socket对象,这里需要【监听】指定端口
		
发送端数据包的打包方法:
	DatagramPacket DatagramPacket(byte[] buf, int length, InetAddress address, int port);
	buf: 需要传递数据的字节数组
	length:是当前字节数组中数据容量字节数
	address:接收端IP地址对象
	port: 接收端对应的端口号

接收端数据包接收方式
	这里需要准备一个空的数据包
	DatagramPacket DatagramPacket(byte[] buf, int length);
	buf: 字节缓冲数组,通常是1024整数倍
	length: 当前字节缓冲数组的容量

3.2 发送端

流程:
	1. 创建UDP服务器对应的发送端Socket
	2. 准备对应数据包,需要带有指定数据
	3. 发送数据 send
	4. 关闭UDP发送端

3.3 接收端

流程:
	1. 打开UDP服务,并且监听指定端口
	2. 创建新的空数据包
	3. 通过Socket接收数据 
	4. 关闭UDP服务接收端

3.4 UDP数据传递丢失问题

1. 网络不够好,稳定性不行,带宽不够
2. 电脑性能不好

3.5 FeiQ

网络传输都有自己的传输规格,如果软件接受到的数据是自己的规格,那么可以读取数据
如果不是,丢弃!!!
FeiQ
    version:time:sender:ip:flag:content
    版本:时间:发送者名字:发送人IP:标记:内容
    数据是一个String类型

    而且使用的协议是UDP协议
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41424681/article/details/104659289

智能推荐

java中Scanner类nextLine()和next()的使用方法和注意事项_羽涵w的博客-程序员ITS304_scanner.nextline

Scanner实现字符串的输入有两种方法,一种是next(),一种nextLine()。next():一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说:next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。nextLine(

React-native 安装基础篇_srxboys的博客-程序员ITS304_安装reactnative基础库

React-native 安装基础篇 RN官方文档 (0.55): - http://facebook.github.io RN 中文翻译 文档 (0.51): - https://reactnative.cn 推荐博客 ES6 语法学习(阮一峰) - http://es6.ruanyifeng.com以下基于MacOS 一...

「物联网开发」使用NodeMcu开发一个LED灯的远程开关_fabyuxuan的博客-程序员ITS304

​物料准备NodeMCU V3一块、面包板一块、LED一个、杜邦线若干,0.96寸OLED显示屏(可选)开发环境编辑器:Arduino IDE 或 Visual Studio Code(需安装Arduino扩展)开发语言: C/C++服务器:目前采用的公有的mosquito服务器,地址是 test.mosquitto.org mqtt默认端口1883,仅作开发测试之用,...

OpenCV学习笔记-轮廓特征_Charles.zhang的博客-程序员ITS304

查找轮廓的不同特征,例如面积,周长,重心,边界框等矩:cv.moments()轮廓面积:cv.contourArea()轮廓周长:cv.arcLength()轮廓近似:cv.approxPolyDp()边界矩形:cv.boundingRect()最小外接矩形: cv.minAreaRect() cv.boxPoints()最小外接圆:cv.minEnclosingCircle()椭圆拟合:cv.e...

智慧水务RTU 水利遥测终端_jixunwulian的博客-程序员ITS304

计讯物联智慧水务RTU TY910,网关型水利RTU,支持视频图像采集,数据主动上报,符合智慧水务相关协议规约,全网通4G网络,支持数据叠加,支持断电断网后数据续传,实现本地存储,数据导出、实时上报、远程查询、遥信、遥控等功能。智慧水务RTU功能1、遵循行业规约,广泛应用,支持国家《水文监测数据通信规约》(ASCII和HEX全项)、《水资源监测数据传输规约》和其他省市特殊规约、SL180-2015水文自动测报系统设备遥测终端机。2、通信方式多样不受限,支持WAN/LAN、ADSL、GPRS、 4G、

JDBC学习_無言46的博客-程序员ITS304

JDBC学习这里写目录标题JDBC学习一级目录二级目录三级目录一、JDBC开发的六个步骤二、SQL注入问题(Statement与preparement)1、Statement 的sql注入问题2、使用PrepareStatement解决sql注入问题三、ORM对象关系映射四、JDBC工具类1、数据源写到dp.properties文件中2、工具类的封装五、三层架构六、JDBC事务处理转账问题1、DAO层(实现数据库信息的查询,更新等)Accout : 实体类AccountDAO : 实体类操作数据库的接口,

随便推点

C# WinAPI 编程详解(一)_yang_B621的博客-程序员ITS304_c# winapi

C# WIN32 API编程最近要实现一个微信/QQ自动定时发送推送的小工具 ,用到API编程,下面一起开始学习Win32 API编程吧!!!C# 用户经常提出2两个问题:“我为什么要另外编写代码来使用内置于Windows中的功能?在框架中为什么没有相应的内容可以让我们直接完成这一任务呢?”当框架小组构建它们的.NET部分时,他们评估了为使.NET程序猿可以使用Win32...

wx:key 详解及其 警告处理_荒--的博客-程序员ITS304

<block wx:for="{{movies}}" wx:for-item="movie">该代码在循环的时候控制台会警告warning, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略不影响使用可以修改如下<block wx:for="{{movies}}" wx:key="movies" wx:for-item="movie">wx:key是用来告诉程序按照某个key去排序这个组件,例如wx:key="Id",此时组件顺序就会按照你arr中Id..

itoa函数使用--c语言[email protected]桐同学的博客-程序员ITS304_c语言itoa函数用法

1.随意输出整数的二进制形式 这个时候我们可以任意打印整数的二进制形式我们如果要想看-1的二进制的话 我们会看到-1的补码#include <stdio.h>#include <stdlib.h>int main(){ char t[50];//注意这个数组的大小要足够包含我们想要的内容 _itoa(9, t, 2);//itoa i to arry i整数转换到数组或字符串(里面包含\0) 这句代码意思是将整数9放到这个数组里面并以二进制形式储存 puts(

【学习笔记】R语言生成热力图和箱体图,并且拼接在一起_Rickyzhangchanghong的博客-程序员ITS304

传统上代码:#载入数据&加载包library(ggplot2)library(grid)library(patchwork)library(RColorBrewer)mydata <- read.csv("mydata_BoomNoRest.csv", header = TRUE, encoding = "UTF-8")palette <- brewer.pal(11,"RdYlBu")[c(1,11)]#画臂架1臂架2角度和油缸2有杆腔压力的关系AngleS

推荐文章

热门文章

相关标签