论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
数据库
›
Oracle
›
网络编程 - 1
网络编程 - 1
莫张周刘王
论坛元老
|
4 天前
|
显示全部楼层
|
阅读模式
楼主
主题
1785
|
帖子
1785
|
积分
5355
目录
为什么需要网络编程? —— 丰富的网络资源
什么是网络编程
网络编程中的根本概念
发送端和吸收端
哀求和相应
客户端和服务端
常见的客户端服务端模型
Socket 套接字
概念
分类
解释
有毗连 / 无毗连
可靠传输 / 不可靠传输
面向字节省 / 面向数据报
全双工 / 半双工
Java 数据报套接字通信模型
Java 流套接字通信模型
Socket 编程留意事项
完!
为什么需要网络编程? —— 丰富的网络资源
用户在浏览器中,打开在线视频资源,看视频等等,实质上是通过网络,获取到网络上的一个视频资源。
与打开本地视频文件类似,只是这个视频文件的来源是网络。相比本地资源来说,网络提供了更为丰富的网络资源。
所谓
网络资源
,实在就是在网络中可以获取的各种数据资源。而所有的网络资源,都是通过
网络编程
来进行数据传输的。
什么是网络编程
网络编程,指网络上的主机,通过
不同的进程
,以编程的方式实现
网络通信(网络数据传输)
。
也可以只需要满足进程不同即可。所以即使是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程。
特殊的,对于
开发
来说,在条件有限的环境下,一般也都是在一个主机中运行多个进程来完成网络编程。
但,我们一定要明确,我们的目的是提供网络上的不同主机,基于网络来传输数据资源。
进程 A:编程来获取网络资源
进程 B:编程来提供网络资源
网络编程中的根本概念
发送端和吸收端
在一次网络数据传输时:
发送端
:数据的
发送方进程
,称为发送端。发送端主机即网络通信中的源主机。
吸收端
:数据的
吸收方进程
,称为吸收端。吸收端主机即网络通信中的目的主机。
收发端
:即发送数据,又吸收数据。
留意:发送端和吸收端只是相对的,只是一次网络数据传传输中,产生数据流向中的概念。
哀求和相应
一般来说,获取一个网络资源,涉及到两次网络数据传输。
第一次:哀求数据的发送(request)。
第二次:相应数据的发送(response)。
举个栗子:在快餐店点一个汉堡包。要先发起哀求:点一份汉堡包,再有快餐店提供的对应相应:提供一份汉堡包。
客户端和服务端
服务端:在常见的网络数据传输场景下,把
提供服务
的一方进程,称为服务端,可以提供对外服务。
客户端:
获取服务
的一方进程,称为客户端。
客户端获取服务资源:
客户端保存资源在服务端:
举个例子:在银行办业务
银行提供存款的服务:用户(客户端)保存资源(现金)在银行(服务端)
银行提供取款的服务:用户(客户端)获取服务端资源(银行替用户保管的现金)
常见的客户端服务端模型
最常见的场景,客户端是指给用户的步伐,服务端是指提供用户服务的步伐:
1. 客户端先发送哀求到服务端
2. 服务端根据哀求数据,实行相应的业务处理
3. 服务端返回相应:发送业务处理结果
4. 客户端根据相应的数据,展示处理结果(展示获取的资源,或提示保存资源的处理结果)
补充:客户端和服务器之间的交互,也是有多种模式的:
1. “一问一答”:一个哀求对应一个相应,一对一(最常见的模式,后续进行“网站
开发
”(web
开发
)也是利用这种一问一答的模式)
2. “一问多答”:一个哀求对应多个相应。(这个场景最重要是涉及到“下载”的场景中)
3. “多问一答”:多个哀求,对应一个相应。(这个场景重要涉及到“上传”)
3. “多问多答”:一个哀求可能对应多个相应,一个相应也可能对应多个哀求。(这个场景重要涉及到“长途控制 / 长途桌面”。我们进行的鼠标键盘操作,都会作为一个一个的哀求发送过去,另一方看到的画面,作为相应~)
Socket 套接字
概念
Socket 套接字,是由体系提供用于网络通信的技能, 是基于 TCP / IP 协议的网络通信的根本操作单元。基于 Socket 套接字的网络步伐
开发
就是网络编程。
分类
Socket 套接字重要针对传输层协议分别为如下三类:
流套接字
:利用传输层的 TCP 协议
TCP,即 Transmission Control Protocol(传输控制协议),传输层协议。
以下是 TCP 的特点(后续会具体介绍)
有毗连
可靠传输
面向字节省
全双工
有吸收缓冲区,也有发送缓冲区
巨细不限
对于字节省来说,可以简单的理解为,传输数据是基于 IO 流,流式数据的特征就是在 IO 流没有关闭的环境下,是无边界的数据,可以多次发送,也可以分开多次吸收。
数据报套接字
:利用 UDP 协议
UDP,即 User Datagram Protocol(用户数据报协议),传输层协议。
以下是 UDP 的特点(后续会细节介绍)
无毗连
不可靠传输
面向数据报
全双工
有吸收缓冲区,五发送缓冲区
巨细受限:一次最多传输 64 KB
对于数据报来说,可以简单的理解为,传输数据是一块一块的,发送一块数据假如 100 个字节,必须一次发送,吸收也必须一次吸收 100 字节,而不能分 100 次,每次吸收 1 个字节。
原始套接字
用于自定义传输层协议,用于读写内核没有处理的 IP 协议数据。(在此并不做了解)
解释
有毗连 / 无毗连
有毗连:此处我们所提到的“毗连”,并不是物理意义的毗连,而是一种抽象的,虚拟的毗连。(本质上是通信双方各自保存对方的相干信息)。
简单的例子:打电话,是一种有毗连的通信方式,A 这边拨号,B 那边需要接通,才能说话。B 可以选择接通或者不接通。
毗连起首的特点是双方都能认同。
无毗连则是 发短信。无论 B 是否同意,A 都能发过去~
可靠传输 / 不可靠传输
网络上存在的“非常环境”是非常多的,无论利用什么样的软硬件的技能本领,都无法 100% 保证网络数据可以或许从 A 一定传输到 B。
此处谈到“可靠传输”,是尽可能的完成数据传输,固然无法确保数据到达对方,至少可以知道,当前这个数据,对方是不是收到了。
此处谈到的可靠性,重要指的是,发送的数是否送到,发送方可以或许清楚的感知到~
面向字节省 / 面向数据报
面向字节省:此处谈到的字节省和文件中的字节省完全一致。网络中传输数据的根本单位就是字节。 TCP
面向数据报:每次传输的根本单位是一个数据报(由一系列字节构成)特定的布局 - UDP
全双工 / 半双工
全双工:一个信道,可以双向通信。
半双工:一个信道,只能单向通信
Java 数据报套接字通信模型
UDP 协议来说,具有无毗连,面向数据报的特征,即每次都是没有创建毗连,并且一次发送全部数据包,一次吸收全部的数据报。
Java 中利用 UDP 协议通信,重要是基于
DatagramSocket 类
来创建数据报套接字,并利用
DatagramPacket
作为发送或吸收的 UDP 数据报。对于一次发送及吸收 UDP 数据报的流程如下:
以上只是一次发送端的 UDP 数据报发送,及吸收端的数据报吸收,并没有返回的数据。也就是只有哀求,没有相应。对于一个服务器来说,重要的是提供多个客户端的哀求处理及相应,流程如下:
Java 流套接字通信模型
Socket 编程留意事项
1. 客户端和服务器:
开发
时,经常是基于一个主机开启两个进程作为客户端和服务器,但真实的场景,一般都是不同主机。
2. 留意目的 IP 和目的端口号,表示了一次数据传输时要发送数据的终点主机和进程
3. Socket 编程我们是利用流套接字和数据报套接字,基于传输层的 TCP 或 UDP 协议,但应用层协议,也需要考虑,后面会说明怎样筹划应用层协议。
4. 假如一个进程 A 已经绑定了一个端口,再启动另一个进程 B 绑定该端口,这种环境也叫做端口被占用。Java 进程中,端口被占用的常见报错信息如下:
此时可以查抄一下进程 B 绑定的是哪个端口,再查看该端口被谁人进程占用。
在 cmd 中输入
netstat -ano | findstr
端口号,就可以体现出对应进程的 pid。
在使命管理器中,通过 pid 查找进程
解决端口被占用的问题
:
假如占用端口的进程 A 不需要运行,就可以关闭 A 之后,再启动需要绑定该端口的进程 B
假如需要运行 A 进程,则可以修改进程 B 的绑定端口,换为其他没有利用的端口。
完!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
莫张周刘王
论坛元老
这个人很懒什么都没写!
楼主热帖
06、etcd 写请求执行流程
网上书店管理系统项目【Java数据库编程 ...
软件测试项目实战经验附视频以及源码【 ...
【云原生】三、详细易懂的Docker 容器 ...
如何用同一套账号接入整个研发过程? ...
四、WinUI3下TitleBar的自定义
DevOps工具选型,什么才是中小企业的最 ...
攻防世界pwn题:实时数据检测 ...
面向大规模神经网络的模型压缩和加速方 ...
c# sqlsugar,hisql,freesql orm框架全 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
Postrge-SQL技术社区
主机安全
公有云
快速回复
返回顶部
返回列表