当前位置: 首页 > news >正文

JavaEE初阶,网络编程篇 - 详解

请添加图片描述

网络编程

网络编程,指网络上的主机,通过不同的进程,以编程的方式达成网络通信(或称为网络数据传输)。
在这里插入图片描述
• 进程A:编程来获取网络资源
• 进程B:编程来提供网络资源

网络编程中的基本概念

发送端和接收端

请求(客户端)和响应(服务端)
⼀般来说,获取⼀个⽹络资源,涉及到两次⽹络数据传输:

Socket套接字(传输层为应用层提供的API)

定义:Socket(套接字)是计算机网络中用于进程间通信的一种机制,允许不同主机或同一主机上的不同进程之间依据网络协议交换数据。它本质上是通信端点的抽象表示,提供了一组编程接口(API),使应用程序能够通过网络发送和接收数据。

工作原理:Socket基于客户端-服务器模型工作。服务器端Socket绑定到特定端口并监听连接请求,客户端Socket通过指定服务器的IP地址和端口号发起连接。一旦建立连接,双方可借助Socket进行双向数据传输。协助TCP(可靠连接)UDP(无连接)两种主要协议。

传输层两个核心协议:

  • TCP
  • 有连接:TCP协议中,保存了对端信息。
  • 可靠传输:尽可能提高传输成功概率。就是不能保证数据包的100%到达,而
  • 面向字节流:读写数据时是以字节为单位。
  • 全双工通信:一个通信链路支持双向通信(能读也能写)
  • UDP
  • 无连接:UDP协议本身不保存对端信息。
  • 不可靠传输:只需要发送数据,对传输成功概率的多少不关心。
  • 面向材料报:读写数据的时候,是以一个内容报为单位,一次必须读写一个UDP数据报,不能是半个。
  • 半双工通信:一个通信链路只支持单向通信(只能读或只能写)
UDP数据报Socket(套接字) 涉及到的核心API

DatagramSocket
DatagramSocket是UDP Socket,用于发送和接收UDP资料报

在这里插入图片描述
在这里插入图片描述

DatagramPacket
DatagramPacket是UDP Socket发送和接收的数据报

在这里插入图片描述
在这里插入图片描述
基于上述UDP的容易理解,接下来实现一个回显服务器(EchoServer)

回显服务器,即客户端给服务器发一个数据(请求),服务器返回一个数据(响应),请求是什么就返回什么给客户端。简易版客户端服务器模型

服务端(server)code

public class UdpEchoServer {

private DatagramSocket socket=null;//相当于网卡
public UdpEchoServer(int port) throws SocketException {

//初始化时,指定一个固定端口,让服务器来使用
socket=new DatagramSocket(port);
}
public void start() throws IOException {

//启动服务器
System.out.println("服务器启动");
while (true){

//循环一次,就相当于处理一次请求
//处理请求的过程,典型的服务器都是分成3个步骤的
//1.读取请求并解析
//DatagramPacket表示一个UDP数据报。此处传入的字节数组,就保存UDP的载荷部分
DatagramPacket requestPacket=new DatagramPacket(new byte[4096],4096);
socket.receive(requestPacket);
//把读取到的二进制数据,转成字符串。只进行构造有效的部分
String request=new String(requestPacket.getData(),0,requestPacket.getLength());
//2.根据请求,处理并响应
//由于此处写的是回显服务器。这个环节进行粗略操作(客户端发啥服务器回啥)
String response=process(request);
//3.把响应返回给客户端
//根据response构造的DatagramPacket,发送给客户端。
//此处不能使用 response.length()
DatagramPacket responsePacket=new DatagramPacket(response.getBytes(),response.getBytes().length
,requestPacket.getSocketAddress());
//此处还不能直接发送。UDP协议自身没有保存对方的信息(不知道发给谁)
//需要指定 目的IP和目的端口
socket.send(responsePacket);
//4.打印一个日志
System.out.printf("[%s:%d] request: %s, response: %s\n",requestPacket.getAddress().toString(),requestPacket
http://www.jsqmd.com/news/56068/

相关文章:

  • LangGraph:add_conditional_edges详解
  • 【超音速专利 CN118134841A】一种光伏产品缺陷检测AI深度学习算法 - 教程
  • 2025年中国水轮泵十大品牌推荐:水轮泵哪家性价比高
  • 2025东北优良大豆种子TOP5权威推荐:甄选优质品种助力农
  • SQL大表关联优化全攻略 - 指南
  • C# 金字塔体积计算程序(Program for volume of Pyramid) - 教程
  • 2025年全国水轮泵设备企业综合评价:永州市冷水滩华立水力机
  • 2025年东北大豆种业十大靠谱品牌推荐:天豆种业可靠吗?
  • 2025年十大GEO推广优化专业公司排行榜,新测评精选推荐
  • P10467 [CCC 2007] Snowflake Snow Snowflakes 题解
  • VSCode 常用快捷键/命令大全
  • 从Hello World到“能做简单计算”,吃透基础语法
  • 2025年度芯硅谷售后完善度及市场口碑TOP5排行榜:五大实
  • P8023 [ONTAK2015] Tasowanie 题解
  • Swift项目生成Framework流程以及与OC的区别 - 详解
  • 2025年十大广东机械设备源头厂家排行榜,新测评精选源头制造
  • 我可以加入少女粤队吗?
  • 2025年GEO推广优化企业排名:专业GEO推广优化公司推荐
  • 2025年发表刊物哪家好?五大靠谱发表服务公司推荐,中赢文化
  • 基于MATLAB的二自由度机械臂PD控制
  • 毕业生找工作TOP5权威推荐:精准破局求职困境,助力毕业生高
  • 线上遇到的redis和数据库数据未同步问题、redisson内部实现问题
  • 提升开发效率的关键:Python 在工程应用中的五大实战技巧
  • 2025文艺演出资深机构TOP5权威推荐:甄选专业团队助力活
  • 2025年东北玻璃钢雕塑品牌商推荐:十大玻璃钢雕塑制造厂批量
  • 2025年十大专业的活动策划专业公司推荐,实力强的活动策划公
  • 2025年黑龙江苯板雕刻制造商推荐:苯板雕刻优质供应商和生产
  • 快懂百科创建代做公司有哪些,推荐一家能做快懂百科的公司
  • 2025年哈尔滨苯板立体雕刻加工厂/制造厂哪家更值得选?
  • 实用指南:实验十三 Z-buffer算法实验