• 【JavaEE】网络编程(网络编程基础、Socket套接字)


    一、网络编程基础

    1.1、什么是网络编程?

    网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)在这里插入图片描述
    注意:我们只要满足进程不同就行;所以即便是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程。对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。
    但是,我们一定要明确,我们的目的是提供网络上不同主机,基于网络来传输数据资源:
    进程A:编程来获取网络资源
    进程B:编程来提供网络资源

    1.2 网络编程中的基本概念

    1.2.1 发送端和接收端

    发送端:数据的发送方进程,称为发送端。发送端主机即网络通信中的源主机。
    接收端:数据的接收方进程,称为接收端。接收端主机即网络通信中的目的主机。
    收发端:发送端和接收端两端,也简称为收发端。

    1.2.2 请求和响应

    在这里插入图片描述

    1.2.3 客户端和服务端

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

    对于服务来说,一般是提供:客户端获取服务资源和客户端保存资源在服务端

    1.3 常见的客户端服务端模型

    在这里插入图片描述

    二、Socket套接字

    2.1 什么是Socket?

    我们要使用QQ发送消息,想要真正发这个数据,需要上层协议调动下层协议,应用层调动传输层:传输层给应用层提供一组api,统称为Socket api

    2.2 分类

    系统提供的socket api主要有两种:
    基于UDP的api
    基于TCP的api

    这两个都是传输层协议,但是差距很大,它们的api也就差别很大
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/e47ea2

    2.3 UDP数据报套接字通信模型

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

    java中使用UDP协议通信,主要基于 DatagramSocket 类来创建数据报套接字,并使用 DatagramPacket 作为发送或接收的UDP数据报。

    注意:
    使用 DatagramSocket 类创建出来的socket对象对应系统中一个特殊的文件(socket文件),socket文件对象对应网卡,相当于控制网卡的遥控器。
    往这个文件里写数据相当于用网卡发送消息
    从这个文件里读数据相当于用网卡接收消息

    对于一次发送及接收UDP数据报的流程如下:
    在这里插入图片描述

    2.4 TCP流套接字通信模型

    在这里插入图片描述

  • 相关阅读:
    想要精通算法和SQL的成长之路 - 全排列
    解决ubuntu报错:No such file or directory
    面试官:synchronized 和 Lock 的区别是什么?
    支持导入ics文件的提醒待办类工具
    使用p2p实现Linux内网快速分发文件
    Cyanine5-N3细胞成像和显微镜CY5-N3/azide星戈瑞
    MySQL数据库——SQL语言
    git你学“废”了吗?——使用git进行版本回退操作
    聊聊SQL注入
    小程序之如何学习一个新的知识,首先就是通过官网进行讲解!!(2)
  • 原文地址:https://blog.csdn.net/m0_68101404/article/details/133980672