一. 认识网络编成
1.1 什么是网络编程
网络编程可以让程序与网络上的其他设备中的程序进行数据交互
1.2 实现网络编成的三个要素
ip地址:设备在网络中的唯一标识
端口:应用程序在设备中的唯一标识
协议: 数据在网络中传输的规则,常见的协议有UDP和TCP两种协议
ipv4: 32位,能表示的信息量就是四十多亿
不够用
1.3 域名、dns服务器、ip地址之间的关系
我们使用的电脑中一般都有自带一个域名解析器,可以将域名解析为ip地址,如果是没有访问过的一些域名,就会去运营商的dns服务器中找到ip地址。自带的dns会保存访问过的域名和ip地址的映射。下次再访问就不用再去查ip地址了。
1.4 使用局域网ip有什么好处
二. java.net包
2.1 InetAddress类:表示互联网协议 (IP) 地址
InetAddress类没有构造方法,所以不能直接new出一个对象;
可以通过InetAddress类的两个静态方法获得InetAddress的对象;
InetAddress.getLocalHost(); 本地主机的主机对象
InetAddress.getByName(""); 非本地的主机对象
主机对象有什么方法呢
计算机名: getHostName()
IP地址: getHostAddress()
getAddress();//获取字节数组形式的IP地址
2.2 端口号(进程号)
被规定是一个16位的二进制, 范围就是0~65535
2的十六次方
肯定够用
端口类型
周知端口0~1023被预知的应用占用(http80, ftp21)
注册端口1024~49151分配给用户进程或者某些应用程序(tomcat8080,mysql3306)
动态端口49152~65535一般不固定进程, 用来动态分配
2.3 通信协议
链接和通信数据的规则就叫做协议
全世界都应该有一个标准才好
程序员在应用层进行开发, 需要看传输层的两个协议
一个是udp : 用户数举报协议
一个是TCP : 传输控制协议
三次握手: 确立链接
四次握手: 断开链接
2.4 udp
DatagramPacket表示存放数据的数据报
发送类型:
DatagramPacket(byte[] buf, int length, InetAddress address, int port);
要发送的内容,字节数组
要发送内容的字节长度
接受端的ip地址
接受端的端口号
接受类型:
DatagramPacket(byte[] buf, int length):
以上数据对象有了
那么发送和接受对象呢
DatagramSocket类:
DatagramSocket(): / DatagramSocket(int port):
表示创建一个默认的套接字,并绑定到本地地址和一个随机的端口号或者专门绑定一个端口号(这里就很好理解, 为啥udp是面向无链接的)
基本方法:
close(): 关闭套接字
recevie(DatagramPacket dp): 接受数据报
send(DatagramPacket dp):发送数据报
说白了, udp的传输是让数据报(最大只能是64kb)自己去找目的地.
2.5 Tcp
也就是说, 这种传出协议, 面向的是一条点对点的通信管道, 建立起管道之后使用io流来实现通信的.