【剧前爆米花--爪哇岛寻宝】网络编程一些概念以及Java实现网络编程流程

作者:困了电视剧

专栏:《JavaEE初阶》

文章分布:这是一篇关于网络初识的文章,在这篇文章中剖析了网络编程的一些概念以及用Java实现网络编程的一些流程,希望对你有所帮助!

 

目录

网络编程

含义和一些概念

发送端和接收端

请求与响应

客户端和服务端

常见的客户端服务端模型

Socket套接字

TCP和UDP的特点

Java数据报套接字通信模型

Java流套接字通信模型


网络编程

含义和一些概念

网络编程,指网络上的主机,通过 不同的进程 ,以编程的方式实现 网络通信(或称为网络数据传输)
当然,我们只要满足 进程 不同就行;所以即便是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程。
特殊的,对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。

 

进程A:编程来获取网络资源。进程B:编程来提供网络资源。 

发送端和接收端

在一次网络传输中:

发送端 :数据的 发送方进程 ,称为发送端。发送端主机即网络通信中的源主机。
接收端 :数据的 接收方进程 ,称为接收端。接收端主机即网络通信中的目的主机。
收发端 :发送端和接收端两端,也简称为收发端。
注意:发送端和接收端只是相对的,只是一次网络数据传输产生数据流向后的概念。

在上述图文中,如果主机2将视频资源发送给主机1,那主机1就是接收端,主机2就是发送端。

如果主机1向主机2发送一个需要资源的请求,那此时主机1就是发送端,主机2就是接收端。

请求与响应

就像上述过程一样,获取一个网络资源一般需要涉及到两次网络传输:第一次是请求数据的发送,第二次是响应数据的发送。

客户端和服务端

服务端 :在常见的网络数据传输场景下,把 提供服务 的一方进程,称为服务端,可以提供对外服务。
客户端 获取服务 的一方进程,称为客户端。

 这个服务可以是获取服务资源,比如请求获取一个视频资源等,也可以是请求保存资源等。这些都可以算是服务,上述图文中,主机1是客户端,主机2是服务端。

常见的客户端服务端模型

最常见的场景,客户端是指给用户使用的程序,服务端是提供用户服务的程序:
1. 客户端先发送请求到服务端
2. 服务端根据请求数据,执行相应的业务处理
3. 服务端返回响应:发送业务处理结果
4. 客户端根据响应数据,展示处理结果(展示获取的资源,或提示保存资源的处理结果)

 

主打的就是一个有应有答。

Socket套接字

Socket 套接字,是操作系统给应用程序提供的一组用于网络编程的API,操作系统原生的socket API 是C语言的,在这里,java将其进行了封装。

Socket套接字主要针对传输层协议划分成流套接字和数据报套接字,其中流套接字使用传输层TCP协议,而数据报套接字使用传输层UDP协议。

TCP和UDP的特点

以下为 TCP 的特点(细节后续再学习):
1.有连接
2.可靠传输
3.面向字节流
4.有接收缓冲区,也有发送缓冲区
5.大小不限
对于字节流来说,可以简单的理解为,传输数据是基于 IO 流,流式数据的特征就是在 IO 流没有关闭的情况下,是无边界的数据,可以多次发送,也可以分开多次接收。
以下为 UDP 的特点(细节后续再学习):
1.无连接
2.不可靠传输
3.面向数据报
4.有接收缓冲区,无发送缓冲区
5.大小受限:一次最多传输 64k
对于数据报来说,可以简单的理解为,传输数据是一块一块的,发送一块数据假如 100 个字节,必须一 次发送,接收也必须一次接收100 个字节,而不能分 100 次,每次接收 1 个字节。

Java数据报套接字通信模型

对于UDP协议来说,具有无连接,面向数据报的特征,即每次都是没有建立连接,并且一次发送全部数据报,一次接收全部的数据报。

java 中使用 UDP 协议通信,主要基于 DatagramSocket 类来创建数据报套接字,并使用
DatagramPacket 作为发送或接收的 UDP 数据报。所谓的socket,是一个特殊的文件,是网卡这个硬件设备的抽象表示,网卡是网络通信中一个不可缺少的硬件,socket就像一个遥控器,代码通过操作socket来操作网卡进而实现通信,通信的流程如下:
1.接收端会首先创建一个DatagramSocket和一个空的DatagramPacket,这个空的DatagraPacket用来接受发送端发送过来的数据。
2.发送端会创建DatagramSocket,然后构造发送的内容比如需要发送的数据,和发送需要的ip地址,端口号等信息,将这些打包成一个DatagramPacket进行发送。
3.接收端接收到发送端发送来的UDP数据报后会将之前空的数据报进行更新,然后根据接收的数据,执行业务。
4.接着接收端会构造发送的内容,这个发送的内容就是响应。
5.发送端会构造一个空的数据报来接收这个响应,然后根据响应的数据决定下一步应该怎么做。

Java流套接字通信模型

流套接字通信模型是有连接的,我们将通信的双方分为Server服务端和Client客户端,所以他们之间的通信过程如下:

1.首先服务端会创建ServerSocket,这个ServerSocket会调用accept()方法等待接受请求。

2.客户端会创建链接Socket向服务端发送请求,服务端接受过后会创建链接Socket,这两个完全建立了连接。

3.此时服务端和客户端就可以实现相互通信,即服务端的InputStream流与客户端的OutputStream之间,客户端的InputStream和服务端的OutputStream之间。

4.最后结束通信时,服务端的Socket和客户端的Socket都需要调用close()方法进行关闭。

 以上就是本篇博客的全部内容,在下一篇博客中我会实现一个简易的客户端和服务端,如有疏漏欢迎指正!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值