网络编程:Net基础
基本概念
- 通信协议
- 通信接口
网络分层:TCP/IP协议
- 网络接口层
- 网络层
- 传输层
- 应用层
ip:
定位一个节点电脑等网络设备
静态方法
获取 InetAddress 对象:getLocalHost() 或 getByName()
成员方法
获取计算机IP地址和获取计算机名:getHostAddress()、getHostName()
//使用getLocalHost方法创建InetAddress对象
//获取本地主机的ip和主机名
InetAddress addr=InetAddress.getLocalHost();//返回本地主机的ip地址
System.out.println(addr.getHostAddress());
System.out.println(addr.getHostName());
//根据域名获得InetAddress对象
addr=InetAddress.getByName("www.baidu.com");
System.out.println(addr.getHostAddress());//返回百度服务器的ip地址
System.out.println(addr.getHostName()); //输出:www.baidu.com
System.out.println("----------------");
addr=InetAddress.getByName("183.232.231.172");
System.out.println(addr.getHostAddress()); //返回IP
System.out.println(addr.getHostName());//输出的是IP而不是域名。1、ip不存在2、DNS服务器不允许进行IP地址和域名的映射,getHostName就会直接返回IP地址
端口:port
定位一款软件或者程序
两个字节 0-65535 UDP TCP
同一协议端口不能那冲突
定义端口越大越好
构造器:new InetSocketAddress(地址|域名,端口)
public class NetPort {
public static void main(String[] args) {
//构建对象
InetSocketAddress socketAddress=new InetSocketAddress("127.0.0.1",8080);
InetSocketAddress socketAddress2=new InetSocketAddress("localhost",8000);
//获取计算机名
System.out.println(socketAddress.getHostName());
//获取IP
System.out.println(socketAddress2.getAddress());
//获取端口
System.out.println(socketAddress2.getPort());
}
}
URL:统一资源定位符(定位互联网上一个资源)
参数
1、协议
2、域名|IP
3、端口
4、请求资源
5、参数
6、锚点
基本使用
public class NetURL {
public static void main(String[] args) throws MalformedURLException {
URL url=new URL("http://www.baidu.com:80/index.html?uname=sp&psw=by#a");
//获取四个值
System.out.println("协议:"+url.getProtocol()); //协议
System.out.println("域名|IP:"+url.getHost()); //域名/IP
System.out.println("端口:"+url.getPort()); //端口
System.out.println("请求资源1:"+url.getFile()); //请求资源1
System.out.println("请求资源2:"+url.getPath()); //请求资源2
System.out.println("参数:"+url.getQuery()); //获取参数
System.out.println("锚点:"+url.getRef()); //锚点
}
}
网络爬虫案例
/**
* 网络爬虫原理一
* openStream():打开与此 URL ,并返回一个 InputStream ,以便从该连接读取。
*/
public class Spider_test {
public static void main(String[] args) throws Exception {
//获取URL
URL url=new URL("https://www.jd.com");
//此URL访问被拒绝
//URL url=new URL("https://www.dianping.com");
//下载资源
InputStream is=url.openStream();
BufferedReader bf=new BufferedReader(new InputStreamReader(is,"utf-8"));
String msg=null;
while ((msg=bf.readLine())!=null){
System.out.println(msg);
}
bf.close();
//分析
//处理
}
}
/**
* 网络爬虫原理+模拟浏览器
* openConnection():返回一个URLConnection实例,表示与URL引用的远程对象的URL 。
*
*/
public class Spider_test02 {
public static void main(String[] args) throws Exception {
//获取URL
//URL url=new URL("https://www.jd.com");
URL url=new URL("https://www.dianping.com");
//下载资源
//模拟浏览器的GET请求
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36");
BufferedReader bf=new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
String msg=null;
while ((msg=bf.readLine())!=null){
System.out.println(msg);
}
bf.close();
//分析
//处理
}
}