【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 {// 獲取本機(jī)InetAddress addr = InetAddress.getLocalHost();System.out.println(addr.getHostAddress());// 返回地址System.out.println(addr.getHostName());// 返回計(jì)算機(jī)名// 根據(jù)域名返回地址addr = InetAddress.getByName("www.baidu.com");System.out.println(addr.getHostAddress());System.out.println(addr.getHostName());} }端口
大小:0-65535(2字節(jié),16位),端口用于區(qū)分軟件。
同一個(gè)協(xié)議下,端口不要沖突。不同的協(xié)議下,端口不建議沖突。如果沖突,不好區(qū)分。
比如(默認(rèn)的)http協(xié)議就使用了80端口,8080端口是tomcat服務(wù)器的,1521是oracle的,3306是mysql的
不用擔(dān)心端口不夠用,因?yàn)殡娔X里不會(huì)裝那么多軟件(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 {// 構(gòu)造方式1InetSocketAddress addr1 = new InetSocketAddress("127.0.0.1", 8080);System.out.println(addr1.getHostName());System.out.println(addr1.getAddress());System.out.println(addr1.getPort());// 構(gòu)造方式2InetSocketAddress addr2 = new InetSocketAddress("www.hanquanhq.cn", 9000);System.out.println(addr2.getHostName());System.out.println(addr2.getAddress());System.out.println(addr2.getPort());} }URL
代碼
運(yùn)行結(jié)果
代碼(續(xù))
運(yùn)行結(jié)果
網(wǎng)絡(luò)爬蟲
一個(gè)簡單的爬蟲
package cn.hanquan.test;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL;/** 網(wǎng)絡(luò)爬蟲的原理*/ 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: 分析、處理...} }有的網(wǎng)頁禁止用這種方式爬取,產(chǎn)生異常
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)想要爬取這種網(wǎng)頁,我們可以模擬瀏覽器進(jìn)行操作:
看到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
以下代碼模擬了瀏覽器,可以正常爬取網(wǎng)頁。
TCP、UDP協(xié)議
使用UDP編程
DatagramPacket
DatagramSocket
總結(jié)
以上是生活随笔為你收集整理的【Java网络编程(一)】IP地址、端口、URL、网络爬虫原理、TCP UDP协议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java多线程】高级主题:定时调度、q
- 下一篇: 【Java网络编程(二)】UDP案例——