网络编程两个主要问题
- 如何精准地定位到网络上一台或者多台主机,定位主机上面特定的应用
- 找到主机后如何可靠高效的进行数据传输
网络编程的两个要素:
- 对应问题一:IP和端口号
- IP地址:
- 分类为IPV4:4个字节组成,2011年已经用尽,例如192.168.0.1 ; IPV6:16个字节组成,
- 万维网和局域网
- InetAddress类
- 实例化
- getByName(String host); host可以为域名,也可以为ip地址.
- getLocalHost(),获取本机ip地址对象
- getByName(String host); host可以为域名,也可以为ip地址.
- 方法
- getHostName() 获取本机域名
- getHostAddress() 获取主机地址
- getHostName() 获取本机域名
- 实例化
- 分类为IPV4:4个字节组成,2011年已经用尽,例如192.168.0.1 ; IPV6:16个字节组成,
- 端口号:标识计算机正在运行的进程(程序)
- 公认端口号:0~1023,被服务通信占用
- 注册端口号1024~49151,分配给用户进程或者应用程序(Mysql:3306,Tomcat:8080)
- 动态/私有端口:49152-65535
- 公认端口号:0~1023,被服务通信占用
- 端口号和IP地址组组合出一个网络套接字:Socket
- IP地址:
- 对应问题二:提供网络通信协议
- UDP (类似短信)
- 将数据及源和目的封装成数据包中,不需要建立连接
- 每个数据包的大小限制在64k
- 无需连接,是不可靠协议
- 不需要建立连接,速度快
- 将数据及源和目的封装成数据包中,不需要建立连接
- TCP(类似打电话 )
- 建立连接,形成传输数据的通道
- 在连接中进行大量数据的传输
- 通过三次握手完成连接,是可靠协议
- 必须建立连接,效率会稍低
- 建立连接,形成传输数据的通道
- UDP (类似短信)
URL网络编程
- 统一的定位资源,对应互联网的某一资源地址
- http(协议)://localhost(主机名):8080(端口号)/exapmles/haha.text(资源地址)?user=adong(参数列表)
- URL类的方法
- 构造方法:new URL(String spec)
- getProtocol() : 获取URL协议名
- getHost() : 获取URL主机名
- getPort() :获取URL端口号
- getPath() :获取URL文件路径
- getFile() : 获取URL文件名
- getQuery() : 获取URL查询名
- 构造方法:new URL(String spec)