网络编程:关注的是底层的数据传输
网页编程:数据的展示
1、基本概念
一、网络:将不同的计算机连接在一起局域网 城域网 互联网
二、地址:Ip地址确定网络上的绝对的地址位置 房子的地址
三、端口号(相当于房门):区分计算机上的软件 相当于房门两个字节0~65535 共65536个
1、 同一个协议下,端口号不能重复,不同的协议下可以重复
2、 1024以下的端口不要使用 80-->http 21-->ftp
四、资源定位 URL 统一资源定位 URI:统一资源
五、数据的传输
1、 协议:TCP和 UDP协议(重点的)
1)、TCP(transfer control protocol):必须先建立连接 先连接在通信 电话 类似于三次握手 面向连接 安全可靠 效率相对低下
2)、UDP(UserDatagramProtocol):类似于发短信 非面向连接 效率高
现在一般是将两者结合使用,底层一些不重要的数据使用UDP传输
2、 传输
1、 先封装
2、 后拆分
3、数据封装拆分
1、 InetAddress InetSocketAddress
2、 URL
3、 TCP:serverSocket(建立在服务器上) Socket(建立在客户端上)
4、 UDP: DatagramSocket DatagramPacket
1、InetAddress:封装IP及DNS
方法:
getHostAddress() 返回ip地址
getHostName() 返回域名|本机为计算机名
InetAddress.getLocalHost();//本机
InetAddress.getByName(“IP地址|域名”);
2、InetSocketAddress:封装端口
1):创建对象:
InetSocketAddress(String hostname,int port)
InetSocketAddress(InetAddress addr,intport)
2):方法:
getAdddress()
getHostName()
getPort()
<span style="font-size:18px;">package com.net.ip; import java.net.InetAddress; import java.net.UnknownHostException; /** * 没有封装端口 * @author lyy * */ public class InetDemo1 { public static void main(String[] args) throws UnknownHostException { //使用getLoaclHost方法创建InetAddress对象 InetAddress addr = InetAddress.getLocalHost(); System.out.println(addr.getHostAddress());//返回ip地址 System.out.println(addr.getHostName());//输入计算机名 //根据域名得到InetAddress对象 addr = InetAddress.getByName("www.163.com"); System.out.println(addr.getHostAddress());//返回服务器的ip地址61.163.117.65 System.out.println(addr.getHostName()); //输出 www.163.com //根据ip得到InetAddress对象 addr = InetAddress.getByName("61.163.117.65");//如果ip地址存在而且DNS帮你解析了,那么getHostName()这个方法返回的就是www.163.com ,否则输出Ip地址 System.out.println(addr.getHostAddress());//返回163的服务器的ip System.out.println(addr.getHostName());//输入Ip而不是域名,如果这个Ip地址不存在 } </span> }
<span style="font-size:18px;">package com.net.ip; import java.net.*; /** * 封装端口:在InetAddress基础上+端口 * @author lyy * */ public class InetSocketDemo1 { public static void main(String[] args) throws UnknownHostException { InetSocketAddress address = new InetSocketAddress("127.0.0.1", 9999); address= new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 9999); System.out.println(address.getHostName()); System.out.println(address.getPort()); InetAddress addr = address.getAddress(); System.out.println(addr.getHostAddress());//返回ip地址 System.out.println(addr.getHostName());//输入计算机名 } }</span>
3、网络爬虫原理
URI(Uniform resource identifier) 统一资源标识符,用唯一的标识一个资源
URL(Uniform resource Locator)统一资源定位器,他是一种具体的URI
四部分组成:协议存放资源的主机域名端口 资源文件名(/)
URL:
一、创建
URI(String str)//绝对路径构建
URI(URL context,String spec)//相对路径构建
二、方法:
System.out.println("协议:"+url.getProtocol());
System.out.println("域名:"+url.getHost());
System.out.println("端口:"+url.getPort());
System.out.println("资源:"+url.getFile());
System.out.println("相对路径资源:"+url.getPath());
System.out.println("锚点:"+url.getRef());//锚点
System.out.println("参数:"+url.getQuery());//参数:存在锚点回返Null 如果不存在返回参数
<span style="font-size:18px;">package com.net.url; import java.net.*; public class URLDemo1 { public static void main(String[] args) throws MalformedURLException { //绝对路径构建 URL url = new URL("http://www.baidu.com:80/index.html#aa?uname=lyy"); System.out.println("协议:"+url.getProtocol()); System.out.println("域名:"+url.getHost()); System.out.println("端口:"+url.getPort()); System.out.println("资源:"+url.getFile()); System.out.println("相对路径资源:"+url.getPath()); System.out.println("锚点:"+url.getRef());//锚点 System.out.println("参数:"+url.getQuery());//参数 :存在锚点 返回Null 如果不存在返回参数 //相对路径构建 url = new URL("http://www.baidu.com:80/a/"); url = new URL(url,"b.txt");//相对路径 System.out.println(url.toString()); } }<strong> </strong></span>