【Java网络编程(一)】IP地址、端口、URL、网络爬虫原理、TCP UDP协议
IP地址与域名的获取
package cn.hanquan.test;import java.net.InetAddress;
import java.net.UnknownHostException;/** IP地址*/
public class IPtest {public static void main(String[] args) throws InterruptedException, UnknownHostException {// 获取本机InetAddress addr = InetAddress.getLocalHost();System.out.println(addr.getHostAddress());// 返回地址System.out.println(addr.getHostName());// 返回计算机名// 根据域名返回地址addr = InetAddress.getByName("www.baidu.com");System.out.println(addr.getHostAddress());System.out.println(addr.getHostName());}
}
端口
大小:0-65535(2字节,16位),端口用于区分软件。
同一个协议下,端口不要冲突。不同的协议下,端口不建议冲突。如果冲突,不好区分。
比如(默认的)http协议就使用了80端口,8080端口是tomcat服务器的,1521是oracle的,3306是mysql的
不用担心端口不够用,因为电脑里不会装那么多软件(2*65535)
netstat -ano
查看端口
InetSocketAddress的使用
package cn.hanquan.test;import java.net.InetSocketAddress;
import java.net.UnknownHostException;/** 端口*/
public class IPtest {public static void main(String[] args) throws InterruptedException, UnknownHostException {// 构造方式1InetSocketAddress addr1 = new InetSocketAddress("127.0.0.1", 8080);System.out.println(addr1.getHostName());System.out.println(addr1.getAddress());System.out.println(addr1.getPort());// 构造方式2InetSocketAddress addr2 = new InetSocketAddress("www.hanquanhq.cn", 9000);System.out.println(addr2.getHostName());System.out.println(addr2.getAddress());System.out.println(addr2.getPort());}
}
URL
代码
运行结果
代码(续)
运行结果
网络爬虫
一个简单的爬虫
package cn.hanquan.test;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;/** 网络爬虫的原理*/
public class Spidertest {public static void main(String[] args) throws IOException {// 获取urlURL url = new URL("https://www.jd.com");// 下载资源InputStream is = url.openStream();BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));String line = null;while (null != (line = br.readLine())) {System.out.println(line);}br.close();// ToDo: 分析、处理...}
}
有的网页禁止用这种方式爬取,产生异常
Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: https://www.dianping.comat java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1913)at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509)at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:245)at java.base/java.net.URL.openStream(URL.java:1117)at cn.hanquan.test.Spidertest.main(Spidertest.java:18)
想要爬取这种网页,我们可以模拟浏览器进行操作:
看到User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Mobile Safari/537.36
以下代码模拟了浏览器,可以正常爬取网页。
package cn.hanquan.test;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;/** 网络爬虫的原理+模拟浏览器*/
public class Spidertest {public static void main(String[] args) throws IOException {// 获取urlURL url = new URL("https://www.dianping.com");// 模拟浏览器HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 模拟浏览器,需要用到http协议conn.setRequestMethod("GET");conn.setRequestProperty("User-Agent","Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Mobile Safari/537.36");// 下载资源BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line = null;while (null != (line = br.readLine())) {System.out.println(line);}br.close();// ToDo: 分析、处理...}
}
TCP、UDP协议
使用UDP编程
DatagramPacket
DatagramSocket
【Java网络编程(一)】IP地址、端口、URL、网络爬虫原理、TCP UDP协议相关推荐
- Java21-day12【网络编程(网络编程入门(ip地址、端口、协议、InetAddress)、UDP通信程序、TCP通信程序)】
视频+资料[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] Java基础--学习笔记(零起点打开java世界的大门)--博 ...
- Linux网络编程(IP地址,端口,通信协议,网络字节序)
网络概念 局域网,城域网,广域网:根据覆盖范围进行的网络划分 互联网(因特网):国际性更大范围的广域网 以太网,令牌环网:组网方式 IP地址 IP地址,是用来标识网络中不同主机地址(每一台主机的唯一标 ...
- 【Linux网络编程】IP地址介绍
什么是 IP 地址 IP 地址(Internet Protocol Address)也称为网间地址.网际地址.IP地址是指互联网协议地址(英语:Internet Protocol Address,又译 ...
- JavaSE(十四)——网络编程(IP地址、端口号、TCP、UDP)
文章目录 1. 概述 2. InetAddress类 3. 端口 4. TCP协议 4.1 传输消息 4.2 文件上传 5. UDP协议 6. TCP与UDP区别 7. URL 8. 下载资源 9. ...
- 【Linux网络编程】IP地址分类和介绍
00. 目录 文章目录 00. 目录 01. IP地址概述 02. IP地址格式 03. IP地址分类 04. 回环IP地址 05. 公网IP地址 06. 私有IP地址 07. 附录 01. IP地址 ...
- Java之初步识别网络编程:IP、端口号、TCP/UDP、Socket、URL等
文章目录 一.网络编程概述 二.网络通信要素概述 三.通信要素1:IP和端口号 IP相关 InetAdress类 如何实例化InetAddress 端口号 四.通信要素2:网络协议 TCP/IP协议簇 ...
- 22.1 网络编程:软件结构、网络通信协议、UDP与TCP协议、(网络编程三要素:协议、ip地址、端口号)、查看ip地址、检测网络是否连通、判断ip是否可用
目录 网络编程 软件结构 网络通信协议 TCP/IP协议 协议分类 UDP TCP 网络编程三要素 协议 IP地址 列:查看本机ip地址 检查网络是否连通.判断ip是否可用 端口号 网络编程 软件结构 ...
- 【网络初识】IP地址,端口号的概念;TCP/IP五层模型;封装和分用
文章目录 1. 局域网LAN 2. 广域网WAN 3. 网络通信基础 3.1 IP地址 3.2 端口号 4. 认识协议 5. 五元组 6. 协议分层 6.1 OSI七层模型 6.2 TCP/IP五层模 ...
- Python编程获得本机所有网络链接的ip地址
一.前言 本文使用Python编程获得本机所有网络链接的ip地址,主要思路为:通过os模块调用cmd命令ipconfig,将返回的结果 保存,然后使用re模块的正则表达式从结果中获得所有网络链接的ip ...
- 网络基础知识—IP地址、MAC地址、PORT端口
网络中的地址管理 IP地址 IP地址是在IP协议中用于标识网络中不同主机的地址,在本地局域网上是唯一的: IP协议的两个版本:IPV4和IPV6 IPV4:IP地址是一个4字节,32位的整数(uint ...
最新文章
- python爬虫学习(二) 简易网页爬取
- h5的语义化部分_Html5新增的语义化标签(部分)
- 模式(一)javascript设计模式
- 尚未注册 OLE DB 访问接口 SQLNCLI10 7043 错误
- Kendo UI开发教程:Kendo UI模板概述
- 关于Treap的学习感受
- TP-LINK WR841N V8刷OpenWRT
- 各类文件的文件头标志
- 织梦后台登陆界面如何修改
- 加油------加油
- C++基础入门丨1. 初识C++像极了C语言
- 湮没在先秦的【文士道】精神
- 九种常见的二维插值方法
- 计算机系统会受到什么损害,影子系统是什么?会损害电脑硬盘吗?
- 第三章 ---- 了解各种 Linux 文本编辑器
- 鹏孚隆冲刺创业板上市:计划募资约7亿元,部分收入来自海外
- java 生成正弦波声音_Java错误生成声音正弦波
- 开源PLM软件Aras详解四 ItemType的概念
- STM32学习--低功耗
- A股涨跌股池数据API接口(JSON标准格式,Get请求方式)