Java基础之网络协议(IP地址、InetAddress、端口)
2023-11-12 23:43:52
Java基础之网络协议(IP地址、InetAddress、端口)
IP地址
IP地址(Internet Protocol Address)是网络中设备的唯一标识。它是32位的二进制数字,通常用点分十进制表示法表示,例如192.168.1.1。IP地址分为两大类:
- IPv4:是给每个连接在网络上的设备分配的32位地址。
- IPv6:是给每个连接在网络上的设备分配的128位地址。
IPv4地址由四个8位二进制数字组成,每个数字表示一个字节。点分十进制表示法将每个字节转换成一个十进制数字,并用点号分隔。例如,IPv4地址192.168.1.1表示二进制地址11000000.10101000.00000001.00000001。
IPv6地址由八个16位二进制数字组成,每个数字表示两个字节。冒号分隔八个十六进制数字。例如,IPv6地址2001:0db8:85a3:08d3:1319:8a2e:0370:7334表示二进制地址00100000.00001101.10110110.00001011.00010001.01111001.00000011.01110010。
InetAddress
InetAddress类表示IP地址。它提供了获取IP地址信息的方法,例如getHostName()、getHostAddress()和getAddress()。InetAddress类还提供了静态方法getByName()和getByAddress(),用于根据主机名或IP地址获取InetAddress对象。
端口
端口是网络协议中用于标识应用程序的16位无符号整数。端口号范围从0到65535。端口号0到1023是系统端口,由操作系统使用。端口号1024到49151是注册端口,由IANA(Internet Assigned Numbers Authority)分配给特定应用程序。端口号49152到65535是动态端口,由应用程序动态分配。
TCP/IP协议
TCP/IP协议(Transmission Control Protocol/Internet Protocol)是互联网上使用的主要协议。TCP/IP协议分为四层:
- 链路层:负责在物理介质上传输数据。
- 网络层:负责在网络上路由数据。
- 传输层:负责在应用程序之间传输数据。
- 应用层:负责为应用程序提供服务。
Socket编程
Socket编程是使用TCP/IP协议进行网络编程的方法。Socket编程允许应用程序通过网络互相通信。Socket编程需要使用Socket类。Socket类提供了创建Socket对象、连接到服务器、发送和接收数据、关闭Socket连接等方法。
如何使用Java编写服务器和客户端程序
使用Java编写服务器和客户端程序需要以下步骤:
- 创建一个服务器类,继承自ServerSocket类。
- 在服务器类中,定义一个main()方法,用于启动服务器。
- 在main()方法中,创建ServerSocket对象,并绑定到一个端口上。
- 在ServerSocket对象上调用accept()方法,等待客户端连接。
- 当客户端连接后,ServerSocket对象会创建一个Socket对象,用于与客户端通信。
- 在服务器类中,定义一个run()方法,用于处理客户端请求。
- 在run()方法中,从Socket对象中读取客户端发送的数据,并对数据进行处理。
- 在run()方法中,将处理结果发送回客户端。
使用Java编写客户端程序需要以下步骤:
- 创建一个客户端类,继承自Socket类。
- 在客户端类中,定义一个main()方法,用于启动客户端。
- 在main()方法中,创建Socket对象,并连接到服务器的IP地址和端口。
- 在Socket对象上调用getOutputStream()方法,获取输出流。
- 在输出流上调用write()方法,向服务器发送数据。
- 在Socket对象上调用getInputStream()方法,获取输入流。
- 在输入流上调用read()方法,读取服务器发送的数据。