本文主要是介绍【黑马程序员】第十章:网络编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
------- android培训、java培训、期待与您交流! ----------
一、网络通信协议
通过计算机网络可以使用多态计算机实现连接,位于同一个网络中的计算机在运行连接和通信时需要遵守一定的规则,被称为网络通信协议。它对数据的传输格式、传输速率、传输步骤等做出了统一规定,通信双方必须同时遵守才能完成数据交换。
网络通信协议有很多种,目前应用最广泛的是 TCP/IP 协议(Transmission Control Protocal/Internet Protocal 传输控制协议、因特网互联协议),他是一个包括 TCP协议、IP协议、UDP协议(User Datagram Protocal)、ICMP协议(Internet Control Message Protocal)和其他一些协议的协议组。
TCP/IP 协议中的四层分别是应用层、传输层、网络层和链路层,每层负责不同的通信功能。
- 链路层:用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、双绞线提供的驱动。
- 网络层:整个 TCP/IP 协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。
- 运输层:主要是网络进行通信,在进行网络通信时,可以采用 TCP 协议,也可以采用 UDP 协议。
- 应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。
1、IP地址和端口号
要想使用网络中的计算机进行通信,必须为每台计算机指定一个标识号,通过这个标识号来指定接收数据的计算机或者发送数据的计算机。在 TCP/IP 协议中,这个标识号就是 IP 地址,它可以唯一标识一台计算机。
- IPv4:由 4 个字节大小的二进制表示,每个字节用一个十进制数(0~255)表示,数字间用符号 . 分开。
- IPv6:使用16个字节表示 IP 地址。
通过 IP 地址可以连接到指定计算机,但如果想访问目标计算机中的某个应用程序,还需要指定端口号,不同的应用程序时通过端口号区分的。端口号是用两个自己表示的,它的取值范围是 0~65535 ,其中 0~1023之间的端口号用于一些知名的网络服务和应用。
2、InetAddress
在 JDK 中提供了一个 InetAddress 类,用于封装一个 IP 地址,并提供了一系列与 IP 地址相关的方法。
import java.net.*;
class InetAddressDemo{public static void main(String[] args){InetAddress local = InetAddress.getLocalHost();InetAddress itcast = InetAddress.getByName("www.itcast.com");System.out.println("本机的IP地址:"+local.getHostAddress());System.out.println("itcast的IP地址:"+itcast.getHostAddress());System.out.println("3秒是否可达:"+itcast.isReachable(3000));System.out.println("itcast的主机名:"+itcast.getHostName());}
}
3、UDP 与 TCP 协议
- UDP 是 User Datagram Protocol的简称,称为用户数据协议。
UDP 是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑链接。简单来说,当一台计算机想另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。
由于使用 UDP 协议消耗资源小,通信效率高,所以通常都会用于音频。视频和普通数据的传输,因为这种情况及时偶尔丢失一两个数据包,也不会对接受结果产生太大的影响。但是在使用 UDP 协议传送数据时,由于 UDP 面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用 UDP 协议。
- TCP 是 Transmissio
这篇关于【黑马程序员】第十章:网络编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!