网络编程
实现网络编程的三个要素:
使用端口号(定位主机上的特定的应用);
使用网络通信协议(可靠,高效的传输数据);
IPv4地址:是一个32位的二进制数,4个字节,一般表示为十进制的数,例如192.168.12.12
在2011年基本用尽
IPv6地址:128位地址,16个字节,写成8个无符号整数,
例如CCCC:1555:1666:1444:1555:ABCD:CBDA:AC45
IP地址分两类:
公网地址(万维网 www.)和私有地址(局域网 192.168.开头)
实例化方式:
try {
//获取指定ip
InetAddress byName = InetAddress.getByName("192.168.23.165");
System.out.println(byName);
InetAddress inet2 = InetAddress.getByName("www.baidu.com");
System.out.println(inet2);
//获取本地ip
InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost);
} catch (UnknownHostException e) {
e.printStackTrace();
}
TCP协议:
-
两个通信进程:客户端,服务端
-
传输前,需要经过”三次握手“方式,点对点通信,是可靠的;
-
使用重发机制,就是当一个通信实体发送给另一个实体时,需要告知另一个实体确认信息,如果没有收到,还会重新发送刚才得信息
-
在连接中可以进行大数据量的传输
-
传输完毕,需释放已建立的连接,效率低
-
例如:打电话
UDP协议:
-
两个通信进程:发送端,接收端
-
将数据,源,目的封装成数据包(传输的基本单位),不需要建立连接
-
不可靠的
-
数据大小有限制 64k内
-
发送数据结束时,无需释放资源,开销小,效率高
-
使用场景:音频,视频和普通数据的传输,例如视频会议
-
例如:发短信,发电报
socket
tcp中客户端和服务端利用socket通信:
public class tcpClient {
udp是通过数据包(DatagramSocket)传输数据的
问题: