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协议相关推荐

  1. Java21-day12【网络编程(网络编程入门(ip地址、端口、协议、InetAddress)、UDP通信程序、TCP通信程序)】

    视频+资料[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java世界的大门)--博 ...

  2. Linux网络编程(IP地址,端口,通信协议,网络字节序)

    网络概念 局域网,城域网,广域网:根据覆盖范围进行的网络划分 互联网(因特网):国际性更大范围的广域网 以太网,令牌环网:组网方式 IP地址 IP地址,是用来标识网络中不同主机地址(每一台主机的唯一标 ...

  3. 【Linux网络编程】IP地址介绍

    什么是 IP 地址 IP 地址(Internet Protocol Address)也称为网间地址.网际地址.IP地址是指互联网协议地址(英语:Internet Protocol Address,又译 ...

  4. JavaSE(十四)——网络编程(IP地址、端口号、TCP、UDP)

    文章目录 1. 概述 2. InetAddress类 3. 端口 4. TCP协议 4.1 传输消息 4.2 文件上传 5. UDP协议 6. TCP与UDP区别 7. URL 8. 下载资源 9. ...

  5. 【Linux网络编程】IP地址分类和介绍

    00. 目录 文章目录 00. 目录 01. IP地址概述 02. IP地址格式 03. IP地址分类 04. 回环IP地址 05. 公网IP地址 06. 私有IP地址 07. 附录 01. IP地址 ...

  6. Java之初步识别网络编程:IP、端口号、TCP/UDP、Socket、URL等

    文章目录 一.网络编程概述 二.网络通信要素概述 三.通信要素1:IP和端口号 IP相关 InetAdress类 如何实例化InetAddress 端口号 四.通信要素2:网络协议 TCP/IP协议簇 ...

  7. 22.1 网络编程:软件结构、网络通信协议、UDP与TCP协议、(网络编程三要素:协议、ip地址、端口号)、查看ip地址、检测网络是否连通、判断ip是否可用

    目录 网络编程 软件结构 网络通信协议 TCP/IP协议 协议分类 UDP TCP 网络编程三要素 协议 IP地址 列:查看本机ip地址 检查网络是否连通.判断ip是否可用 端口号 网络编程 软件结构 ...

  8. 【网络初识】IP地址,端口号的概念;TCP/IP五层模型;封装和分用

    文章目录 1. 局域网LAN 2. 广域网WAN 3. 网络通信基础 3.1 IP地址 3.2 端口号 4. 认识协议 5. 五元组 6. 协议分层 6.1 OSI七层模型 6.2 TCP/IP五层模 ...

  9. Python编程获得本机所有网络链接的ip地址

    一.前言 本文使用Python编程获得本机所有网络链接的ip地址,主要思路为:通过os模块调用cmd命令ipconfig,将返回的结果 保存,然后使用re模块的正则表达式从结果中获得所有网络链接的ip ...

  10. 网络基础知识—IP地址、MAC地址、PORT端口

    网络中的地址管理 IP地址 IP地址是在IP协议中用于标识网络中不同主机的地址,在本地局域网上是唯一的: IP协议的两个版本:IPV4和IPV6 IPV4:IP地址是一个4字节,32位的整数(uint ...

最新文章

  1. python爬虫学习(二) 简易网页爬取
  2. h5的语义化部分_Html5新增的语义化标签(部分)
  3. 模式(一)javascript设计模式
  4. 尚未注册 OLE DB 访问接口 SQLNCLI10 7043 错误
  5. Kendo UI开发教程:Kendo UI模板概述
  6. 关于Treap的学习感受
  7. TP-LINK WR841N V8刷OpenWRT
  8. 各类文件的文件头标志
  9. 织梦后台登陆界面如何修改
  10. 加油------加油
  11. C++基础入门丨1. 初识C++像极了C语言
  12. 湮没在先秦的【文士道】精神
  13. 九种常见的二维插值方法
  14. 计算机系统会受到什么损害,影子系统是什么?会损害电脑硬盘吗?
  15. 第三章 ---- 了解各种 Linux 文本编辑器
  16. 鹏孚隆冲刺创业板上市:计划募资约7亿元,部分收入来自海外
  17. java 生成正弦波声音_Java错误生成声音正弦波
  18. 开源PLM软件Aras详解四 ItemType的概念
  19. STM32学习--低功耗
  20. A股涨跌股池数据API接口(JSON标准格式,Get请求方式)

热门文章

  1. 机器学习-降维之奇异值分解SVD算法原理及实战
  2. linux下qt检查进程是否存在,Linux下C语言实现查看进程是否存在
  3. java自学方法_JAVA自学 方法
  4. ie 访问 java接口_Java基础面试题 库(1~10)
  5. 整数域上的多项式辗转相除
  6. SPOJ Finding Fractions
  7. VIM-配置-.vimrc
  8. gdb调试命令的使用及总结
  9. cocos2d-x游戏实例(7)-A星算法(3)
  10. 如何制作出让女朋友满意的大片