【JavaEE】_网络编程基础

这篇具有很好参考价值的文章主要介绍了【JavaEE】_网络编程基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 网络编程基础

1.1 网络编程定义

1.2 网络编程中的基本概念

1.2.1 API

1.2.2.发送端和接收端

1.2.3 请求和响应

1.2.4 客户端和服务端

2. Socket 套接字

2.1 概念

2.2 分类

3. UDP数据报套接字编程

3.1   DatagramSocket API

3.1.1 含义

3.1.2 构造方法

3.1.3 常用方法

3.2   DatagramPacket API

3.2.1 含义

3.2.2 构造方法

 3.2.3 常用方法


1. 网络编程基础

1.1 网络编程定义

网络编程是指网络上的主机,通过不同的进程,以编程的方式实现网路通信(或称为网络数据传输);

1.2 网络编程中的基本概念

1.2.1 API

1. 进行网络编程时,需要操作系统提供的API才能实现编程;

2. API可以认为是应用层与传输层之间交互的路径

3. 用于网络编程的API称为Socket API;

1.2.2.发送端和接收端

发送端:数据的发送方进程,发送端主机即网络通信中的源主机;

接收端:数据的接收方进程,接收端主机即网络通信中的目的主机;

发送端和接收端是相对的,只是一次网络数据传输产生数据流向后的概念;

1.2.3 请求和响应

一般来说获取一个网络资源,涉及到两次网络数据传输:

第1次:请求数据的发送;

第2次:响应数据的发送;

1.2.4 客户端和服务端

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

客户端:获取服务的一方进程称为客户端;

对于服务来说,一般是提供:

(1)客户端获取服务资源;

(2)服务器保存客户端资源;

2. Socket 套接字

2.1 概念

1. Socket套接字是由系统提供用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元。基于Socket套接字的网络程序开发就是网络编程。

2. socket是操作系统中的一个概念,本质上是一种特殊的文件,Socket是将网卡抽象为文件,向socket文件中写数据,就相当于通过网卡发送数据,从socket文件读数据,就相当于通过网卡接收数据,从而实现了网络通信和文件操作的统一

2.2 分类

socket API是与传输层密切相关的,传输层提供了两个最核心的协议:UDP和TCP,

因此socket也提供了两种风格:UDP风格与TCP风格;

TCP:有连接(需要建立连接才能通信,如打电话)、可靠传输(发送方明确消息是否发送成功,如有已读标志的社交软件),面向字节流(数据传输的基本单位是字节),全双工(同上);

UDP:无连接(无需建立连接才能通信,如发短信)、不可靠传输(只负责传输,不论是否传输成功,如QQ、微信)、面向数据报(数据传输的基本单位是数据报,具有严格格式,可能是若干个字节),全双工(双向同时通信);

注:(1)在计算机中,抽象的连接是很常见的,连接本质上就是建立连接的双方各自保存对方的信息,故而对于无连接的UDP,需要程序员调用UDP的socket api时把对方的位置等信息发送过去。

(2)网络通信数据的基本单位涉及到多种说法,包括数据报(Datagram)、数据包(Packet)、数据帧(Frame)、数据段(Segment);

3. UDP数据报套接字编程

3.1   DatagramSocket API

3.1.1 含义

Datagram表示网卡的一个特殊文件,使用这个类表示一个socket对象,在操作系统中将这个socket对象当做一个文件来处理,相当于是文件描述符表上的一项:

注:① 普通文件对应的硬件设备是硬盘,socket对象对应的硬件设备是网卡

② 一个socket对象即可与另一台主机进行通信了,如需与多台主机通信,需创建多个socket对象;

在Java中就使用DatagramSocket类表示系统内部的socket文件

3.1.2 构造方法

// 创建一个socket对象     
DatagramSocket();
// 传入一个端口号,令当前的socket对象与指定的端口(简单整数)关联起来
DatagramSocket(int port);

注:① 端口号用于标识主机上的不同应用程序;

② 本质上说,并非进程与端口建立联系,而是进程中的socket对象与端口建立联系;

③ 对于第一种没有传入指定端口号的构造方法,系统会自动分配一个空闲端口;

3.1.3 常用方法

//接收
void receive(DatagramPacket p);
//发送
void send(DatagramPacket p);
//关闭
void close()

注:① 用于接收和发送的都是DatagramPacket对象

② 接收方法中的DatagramPacket对象p相当于是一个空对象,receive方法内部会对参数的这个空对象进行内容填充(数据来自网卡),从而构造出一个结果数据,参数是一个输出型参数

③类似于文件操作,使用完后需要使用close方法进行资源的释放;

3.2   DatagramPacket API

3.2.1 含义

1. DatagramPacket表示一个UDP的数据报,包含一些具体数据;

2. UDP传输是面向数据报的,每次进行传输时以UDP数据报为基本单位;

3.2.2 构造方法

// 构造buf缓冲区
DatagramPacket(byte[] buf, int length);
// 构造缓冲区与地址,SocketAddress表示IP+端口号
DatagramPacket(byte[] buf, int offset, int length, SocketAddress address);

注:① 构造DatagramPacket对象时可以指定一些具体的数据,如字节数组缓冲区,地址;

② byte[]数组:

【JavaEE】_网络编程基础,JavaEE,网络,java-ee,java,intellij-idea文章来源地址https://www.toymoban.com/news/detail-820266.html

 3.2.3 常用方法

// 从接收的数据报中获取发送端主机的IP地址或从发送的数据报中获取接收端主机的IP地址
InetAddress getAddress();
// 从接收的数据报中获取发送端主机的端口号或从发送的数据报中获取接收端主机的端口号
int getPort();
// 获取数据报中的数据
byte[] getData();

到了这里,关于【JavaEE】_网络编程基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 网络编程基础

    一个网络请求、服务之间的调用都需要进行网络通讯,在日常开发时我们可能并不会关心我们的服务端是怎么接收到请求的、调用别的服务是怎么调用的,都是直接使用现成的框架或工具,比如,Tomcat、Dubbo、OkHttp等提供网络服务的框架。作为程序员,我们还是要知其然知其

    2024年02月15日
    浏览(36)
  • Java网络编程基础

    Java网络编程基于TCP/UDP协议的基础之上,TCP/IP协议是一个协议簇。里面包括很多协议的,UDP只是其中的一个, 之所以命名为TCP/IP协议,因为TCP、IP协议是两个很重要的协议,就用他两命名了。那么首先我们先介绍一下TCP和UDP的特点: 1.TCP(Transmission Control Protocol,传输控制协议

    2024年02月08日
    浏览(40)
  • Java基础学习(17)网络编程

    解释: 在网络通信协议下,不同计算机上运行的程序,进行的数据传输 应用场景 : 即时通信、网游对战、金融证券、国际贸易、邮件、等等 不管是什么场景,都是计算机跟计算机之间通过网络进行 数据传输 Java中可以使用 java.net 包下的技术轻松开发出常见的网络应用程序

    2024年02月05日
    浏览(73)
  • 网络编程(JavaEE初阶系列10)

    目录 前言: 1.网络编程的基础 1.1为什么需要网络编程 1.2什么是网络编程 1.3网络编程中的基本概念 1.3.1发送端和接收端 1.3.2请求和响应 1.3.3客户端和服务端 2.Socket套接字 2.1概念 2.2分类 3.UDP数据报套接字编程 3.1DataGramSocket API 3.2DatagramPacket API 3.3基于UDP的回显服务器(echo s

    2024年02月13日
    浏览(30)
  • 计算机网络技术与JAVA网络编程URL编程-----JAVA入门基础教程-----计算机网络经典

    import org.junit.jupiter.api.Test; import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class URLTest { public static void main(String[] args) { //URL:统一资源定位符(种子),一个URL就定位着互联网上某个资源的地址 //http:应用层协议,IP地址,端口号,资源地址,参数

    2024年02月15日
    浏览(57)
  • 计算机网络技术与JAVA网络编程UDP编程-----JAVA入门基础教程-----计算机网络经典

    import org.junit.jupiter.api.Test; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.*; public class UDP { public static void main(String[] args) { DatagramSocket datagramSocket = null; try { datagramSocket = new DatagramSocket(); InetAddress inetAddress = InetAddress.getByName(\\\"127.0.0.1\\\"); int port = 9090; byte[] byte

    2024年02月15日
    浏览(49)
  • Java基础面试题04(网络编程)

    什么是网络编程?它的作用是什么? 网络编程是一种用于在计算机网络中进行数据交换和通信的编程技术。它涉及到使用网络协议和相关工具来实现程序之间的通信。网络编程的目标是允许不同设备或应用程序之间进行数据传输、共享资源和进行远程控制。 网络编程的作用

    2024年02月15日
    浏览(42)
  • [JAVAee]网络编程-套接字Socket

    目录 基本概念 发送端与接收端 请求与响应 ​编辑客户端与服务器 Socket套接字  分类 数据报套接字 流套接字传输模型   UDP数据报套接字编程 DatagramSocket API DatagramPacket API InetSocketAddress API 示例一: 示例二: TCP流数据报套接字编程 ServerSocket API Socket API 示例一:   网络编程指的

    2024年02月13日
    浏览(52)
  • 快速入门java网络编程基础------Nio

    哔哩哔哩黑马程序员 netty实战视频 NIO(New I/O)是Java中提供的一种基于通道和缓冲区的I/O(Input/Output)模型。它是相对于传统的IO(InputStream和OutputStream)模型而言的新型I/O模型。NIO的主要特点包括: 1.通道与缓冲区: 2.NIO引入了通道(Channel)和缓冲区(Buffer)的概念。通道

    2024年01月20日
    浏览(52)
  • 《Java SE》网络编程基础知识归纳。

    目录 一、网络基本介绍 1、什么是网络通信? 2、网络 3、IP地址 4、域名 5、网络通信协议 6、Socket 二、TCP网络通信编程  1、应用实例1(字节流) 2、应用实例2(字节流) 3、应用实例3(字符流) 4、netstat 指令 三、UDP网络通信编程  1、基本介绍 2、基本流程 3、应用实例  

    2024年01月20日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包