【Java网络编程(一)】IP地址、端口、URL、网络爬虫原理、TCP UDP协议
生活随笔
收集整理的這篇文章主要介紹了
【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
以下代碼模擬了瀏覽器,可以正常爬取網頁。
TCP、UDP協議
使用UDP編程
DatagramPacket
DatagramSocket
總結
以上是生活随笔為你收集整理的【Java网络编程(一)】IP地址、端口、URL、网络爬虫原理、TCP UDP协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java多线程】高级主题:定时调度、q
- 下一篇: java美元兑换,(Java实现) 美元