JAVA - 网络编程

发布于:2022-11-09 ⋅ 阅读:(17) ⋅ 点赞:(0) ⋅ 评论:(0)

网络编程

1.1 网络编程概述

  • 计算机网络是指将地理位置不同的具有独立功能的多台计算机及外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统;
  • 网络编程是指在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换;

1.2 网络编程的三要素

IP地址

  • 给每一台网络设备指定一个标识,通过这个标识来确定操作对象,而IP地址就是这个标识号,也就是设备的标识;

端口

  • 网络的通信本质上是两个应用程序的通信,通过增加一个标识来指定所使用的应用程序用以区分应用程序,如果说IP地址就是对网络设备的标识,那么端口就是对应用程序的标识;

协议

  • 在计算机网络中,使多台网络设备进行连接和通信时需要遵守一定的规则,这些规则被称为网络通信协议,它对数据的传输格式,传输速率,传输步骤等做了统一的规定,通信双方必须遵守才能完成数据的交换,常见的协议有 TCP 协议和 UDP 协议;

1.3 IP地址

IP地址是网络中设备的唯一标识

IP地址 分为两大类:

  • IPV4 :给每个连接在网络上的主机分配一个 32bit 的地址,按照 TCP/IP 规定,IP地址用二进制来表示,每一个IP地址长 32bit 也就是 4 字节,由于地址过长不方便记忆,IP地址通常被写成十进制的形式,例如 “192.168.100.101”;
  • IPV6 : 由于互联网行业的更新迭代,IP地址的需求量越来越大,但是网络地址资源有限,故通过 IPV6 重新定义地址空间,采用 128 位地址长度,每 16 个字节一组,分成 8 组十六进制数,使得可表达的位数增加;

IP地址相关的常用命令:

  • ipconfig: 查看本机的IP地址;
  • ping IP地址: 检查网络是否连通;

特殊IP地址:

  • 127.0.0.1: 是回送地址,可以代表本机地址,一般用来测试使用

1.4 InetAddress 类的使用

InetAddress 类代表一个互联网协议(IP)地址。

  • static InetAddress getByName(String host) : 确定主机的IP地址,给定主机名;
  • String getHostName(): 返回文本表示中的IP地址字符串;
  • String getHostAddress(): 返回文本表示中的IP地址字符串;

1.5 UDP数据协议

发送数据的步骤:

  1. 创建发送端的 Socket 对象( DatagramSocket )

​ DatagramSocket()

  1. 创建数据,并把数据打包

​ DatagramPacket( byte[] buf, int length, InetAddress address, int port )

  1. 调用 DatagramSocket 对象的方法发送数据

​ void send( DatagramPacket )

  1. 关闭发送端

​ void close()

接收数据的步骤:

  1. 创建接收端的 Socket 对象( DatagramSocket( 端口号 ) )

​ DatagramSocket( int port )

  1. 创建一个数据包,用于接收数据

​ DatagramPacket( byte[] buf, int length )

  1. 调用 DatagramSocket 对象的方法接收数据

​ void receive( DatagramPackett dp )

  1. 解析数据包,并把数据在控制台显示

​ byte[] getData()

​ int getLength()

  1. 关闭接收端

​ void close()

1.6 TCP数据协议

发送数据的步骤:

  1. 创建客户端的 Socket 对象( Socket )

​ Socket( String host, int port )

  1. 获取输出流,写数据

​ OutputStreamgetOutputStream()

  1. 释放资源

​ void close();

接收数据的步骤:

  1. 创建服务器端的 Socket 对象( ServerSocket )

​ ServerSocket( int port )

  1. 监听客户端连接,返回一个 Socket 对象

​ Socket accept()

  1. 获取输入流,读数据,并把数据显示在控制台

​ InputStream getInputStream()

  1. 释放资源

​ void close()