网络编程: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.comSystem.out.println("----------------");addr=InetAddress.getByName("183.232.231.172");System.out.println(addr.getHostAddress()); //返回IPSystem.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());//获取IPSystem.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()); //域名/IPSystem.out.println("端口:"+url.getPort()); //端口System.out.println("请求资源1:"+url.getFile()); //请求资源1System.out.println("请求资源2:"+url.getPath()); //请求资源2System.out.println("参数:"+url.getQuery()); //获取参数System.out.println("锚点:"+url.getRef()); //锚点}}
网络爬虫案例
/*** 网络爬虫原理一* openStream():打开与此 URL ,并返回一个 InputStream ,以便从该连接读取。*/public class Spider_test {public static void main(String[] args) throws Exception {//获取URLURL 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();//分析//处理}}
