【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也就差别很大

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

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

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

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

对于一次发送及接收UDP数据报的流程如下:

2.4 TCP流套接字通信模型

相关推荐
黄焖鸡能干四碗5 分钟前
MES生产执行制造系统建设(Java+Mysql)
java·大数据·开发语言·信息可视化·需求分析
workflower8 分钟前
跨链协同制造中的服务博弈与激励机制
开发语言·软件工程·制造·需求分析·个人开发·结对编程
liulilittle12 分钟前
Y组合子剖析:C++ 中的递归魔法
开发语言·c++·编程语言·函数式编程·函数式·函数编程·y组合子
JaguarJack17 分钟前
深入理解 PHP-FPM 的最佳配置
后端·php
zx_zx_12317 分钟前
传输层协议 UDP
网络·网络协议·udp
金涛03192 小时前
QT-day2,信号和槽
开发语言·qt·命令模式
csdn_aspnet8 小时前
PHP 求圆柱体的周长(Find the perimeter of a cylinder)
php
R-G-B9 小时前
【02】C#入门到精通——C# 变量、输入/输出、类型转换
开发语言·c#·c# 变量·c#输入/输出·c#类型转换
星河队长9 小时前
C# 软件加密方法,有使用时间限制,同时要防止拷贝
开发语言·c#
史迪奇_xxx9 小时前
10、一个简易 vector:C++ 模板与 STL
java·开发语言·c++