第12章 网络编程

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,同步至SelectDB 1个月
简介: Java网络编程的基本认识。

12.1 网络相关概念

12.1.1 网络通信

  1. 概念:两台设备之间通过网络实现数据传输
  2. 网络通信:将数据通过网络从一台设备传输到另一台设备。
  3. java.net包提供了一系列接口,供编程使用,往后曾网络通信。

推荐课程:https://www.bilibili.com/video/BV1c4411d7jb?spm_id_from=333.337.search-card.all.click&vd_source=a1a080f1a8b2e133ff76f91cc27c049a

12.1.2 网络

  1. 概念:两台或多态设备通过一定物理设备连接起来就构成了网络。
  2. 分类:根据覆盖范围分
  • 局域网:
  • 城域网
  • 广域网:万维网时广域网的代表

12.1.3 IP地址

  1. 概念:用于唯一标识网络中的每台计算机/主机
  2. ipconfig:查看本机ip地址
  3. IPV4地址表示形式:点分十进制,xxx.xxx.xxx.xxx
  4. 组成:网络地址 + 主机地址
  5. IPV4分类:
  1. 本地主机地址:127.0.0.1

12.1.4 域名

  1. 概念:将ip地址根据http协议,映射成域名,便于记忆
  2. 端口号:
  • 概念:用于标识计算机上某个特定的网络程序(服务)
  • 表示形式:以整数表示,端口范围0~65535(216-1)
  • 0~1024一般系统预留(已被占用)
  • 22:ssh
  • 21:ftp
  • 25:smtp
  • 80:http
  • 常见网络程序端口号:
  • 8080:tomcat
  • 3306:mysql
  • 1521:oracle
  • 1433:sqlserver
  1. netstat指令:
  • netstat -an:查看当前主机网络情况,包括端口监听和网络连接状态
  • Listenning表示端口正在监听
  • netstat -an | more:分页显示网络情况,按空格显示下一页

12.1.5 网络通信协议(TCP/IP)

  1. TCP:Transmission Control Protocol,传输控制协议
  • 使用TCP协议前,须建立TCP连接,形成数据传输通道
  • 传输前,采用“三次握手”确保连接可靠
  • “三次握手”可靠后,可进行大数据量传输
  • 传输完毕后,需要释放已经建立的连接,效率低。
  • TCP协议通信时用到的两个应用进程:客户端、服务端
  1. IP:Internet Protocol,网络通讯协议

  1. UDP协议(用户数据协议)
  • 将数据、源、目的封装成数据包,不需要建立连接
  • 不可靠
  • 每个数据包大小现在在64k内,不适合大数据量传输
  • 传输完毕不需要释放资源,速度快

12.2 InetAddress类

  1. getLocalHost():静态方法,获取本机InetAddress对象
  • 返回:域名/ip地址
  1. getByName(String host):根据指定主机名/域名,获取其ip地址对象
  2. getHostAddress:通过InetAddress对象,获取其ip地址(主机名)
  3. getHostName():通过InetAddress对象,获取其主机名或域名

12.3 Socket(套接字)

  1. 组成:端口号+ip地址
  2. 作用:Socket允许程序把网络当成一个流,数据在两个Socket间通过IO传输
  3. 分类:一般将主动发起通信的应用程序成为客户端,等待通信请求的为服务端

12.3.1 TCP网络通信编程

  • 必须关闭Socket,否则会造成服务器占用,导致无法连接
  • ServerSocket每调用一次accept(),就会开启一个Socket,所以也必须关闭ServerSocket
  • 单向数据传输(客户端单向数据流,服务器单向数据流),可不设置结束标志,可以正常通信。
  • 双向数据传输,必须设置结束标志,且关闭位置必须紧邻输出流。否则服务器会阻塞,处于等待状态,无正常输出。
  • 结束标志:socket.shutdownOutput()
  • 字符流输出中,可利用newLine()readLine()作为结束标志,而不使用socket.shutdownOutput()
  • 当客户端连接到服务端后,客户端也会通过一个端口与服务端通讯,该端口由TCP/IP随机分配

12.3.2 UDP网络编程

  1. DatagramSocket类和DatagramPacket类【数据包/数据报】实现了基于UDP协议的网络程序
  2. UDP协议发送的数据不一定能够安全到达目的地,也不确定何时到达。
  3. DatagramSocket类和DatagramPacket类的对象封装了UDP数据报,包含了发送端的IP地址和端口号,以及接收端IP地址和端口号
  4. UDP协议的每个数据报都包含了完整的地址信息,因此无需建立发送方和接收放的连接
  5. 基本流程:
  • 通过DatagramSocket建立发送端和接收端
  • 没有服务端、客户端的概念
  • 将数据封装到DatagramPocket对象
  • 调用DatagramSocket的方法接收、发送数据
  • 调用DatagramPocketgetData()方法解析数据
  • 关闭DatagramSocket
  1. 注意:必须先启动先接收到数据的端,不然服务会一直阻塞。
目录
打赏
0
0
0
0
0
分享
相关文章
探索操作系统的未来:量子计算与操作系统的融合
【7月更文挑战第9天】在数字时代的浪潮中,操作系统作为计算机系统的核心,其发展与创新一直是技术界关注的焦点。随着量子计算技术的突破性进展,未来操作系统的设计理念和功能实现将迎来革命性的变化。本文将探讨量子计算对操作系统架构的潜在影响,分析量子操作系统的设计挑战,并预测未来操作系统可能的发展方向。通过深入讨论,我们旨在为读者提供一个关于操作系统未来可能性的视角,以及量子技术如何塑造下一代计算机系统的洞见。
41 0
foreach rf
library(randomForest) library(foreach) library(cvTools) set.seed(1234) K =10 R = 3 cv
852 0
kde
|
7天前
|
Docker镜像加速指南:手把手教你配置国内镜像源
配置国内镜像源可大幅提升 Docker 拉取速度,解决访问 Docker Hub 缓慢问题。本文详解 Linux、Docker Desktop 配置方法,并提供测速对比与常见问题解答,附最新可用镜像源列表,助力高效开发部署。
kde
4130 8
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
693 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等