第12章 网络编程

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
简介: 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. 注意:必须先启动先接收到数据的端,不然服务会一直阻塞。
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
3月前
|
消息中间件 Kubernetes 网络协议
网络编程一些问题总结
网络编程一些问题总结
|
1月前
|
域名解析 网络协议 安全
网络编程
网络编程
|
3月前
|
Linux
网络编程之 socket编程
网络编程之 socket编程
29 0
|
6月前
|
网络协议 关系型数据库 MySQL
网络编程初识
网络编程初识
31 0
|
7月前
|
Java C++
4. 网络编程
4. 网络编程
33 0
|
7月前
64.【网络编程】(四)
64.【网络编程】
56 0
|
7月前
|
应用服务中间件
64.【网络编程】(三)
64.【网络编程】
24 0
|
7月前
|
网络协议
64.【网络编程】(二)
64.【网络编程】
22 0
|
7月前
|
网络协议
64.【网络编程】(一)
64.【网络编程】
25 0