网络编程--常用类操作

小编 2026-07-10 阅读:189 评论:0
IP地址 用来标识网络中的一个通信实体的地址。通信实体可以是计算机、路由 器等。 比如互联网的每个服务器都要 有自己的IP地址,而每个局域网的计 算机要通信也要配置IP地址。路由器 是连接两个...

IP地址

用来标识网络中的一个通信实体的地址。通信实体可以是计算机、路由 器等。 比如互联网的每个服务器都要 有自己的IP地址,而每个局域网的计 算机要通信也要配置IP地址。路由器 是连接两个或多个网络的网络设备。

IP地址分类

  1. IPV4:32位地址,以点分十进制表示,如192.168.0.1
  2. IPV6:128位(16个字节)写成8个16位的无符号整数,每个整数用四个十六进制位表示,数之间用冒号(:)分开

特殊的IP

  1. 127.0.0.1 本机地址
  2. 192.168.0.0–192.168.255.255私有地址,属于非注册地址,专门为组织机构内部使用。

使用InetAddress

Java提供了InetAddress类代表IP地址,InetAddress下还有两个子类:Inet4Address、Inet6Address,他们分别代表IPv4地址和IPv6地址。


import java.net.InetAddress;
import java.net.UnknownHostException;

public class IPTest {

	public static void main(String[] args) throws UnknownHostException {
		//使用getLocalHost方法创建InetAddress对象  本机
		InetAddress addr = InetAddress.getLocalHost();
		System.out.println(addr.getHostAddress());  //返回:192.168.1.110
		System.out.println(addr.getHostName());  //输出计算机名
		
		//根据域名得到InetAddress对象
		addr = InetAddress.getByName(\"www.baidu.com\"); 
		System.out.println(addr.getHostAddress());  //返回 baidu服务器的ip:
		System.out.println(addr.getHostName());  //输出:www.baidu.com
		
		//根据ip得到InetAddress对象
		addr = InetAddress.getByName(\"123.56.138.176\"); 
		System.out.println(addr.getHostAddress());  //返回 ip:123.56.138.176
		System.out.println(addr.getHostName());  //输出ip而不是域名:如果这个IP地 址不存在或DNS服务器不允许进行IP地址和域名的映射
	}

}

端口

端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机上运行多个网络应用程序。端口的表示是一 个16位的二进制整数,2个字节,对应十进制的0-65535。

Windows系统下

  • 查看所有端口:netstat -ano
  • 查看指定端口:netstat -aon|findstr “808”
  • 查看指定进程:tasklist|findstr “808”
  • 查看具体程序:使用任务管理器查看PID

使用InetSocketAddress

包含端口,用于socket通信的


import java.net.InetSocketAddress;
public class PortTest {

	public static void main(String[] args) {
		//包含端口
		InetSocketAddress socketAddress = new InetSocketAddress(\"127.0.0.1\",8080);
		InetSocketAddress socketAddress2 = new InetSocketAddress(\"localhost\",9000);
		System.out.println(socketAddress.getHostName());
		System.out.println(socketAddress.getAddress());
		System.out.println(socketAddress2.getAddress());
		System.out.println(socketAddress2.getPort());

	}

}

URL

\"在这里插入图片描述\"
URI: Universal Resource Identifier 统一资源标志符,用 来标识抽象或物理资源的一个紧凑字符串。
URL:Universal Resource Locator 统一资源定位符,一种定 位资源的主要访问机制的字符串,一个标准的URL必须包括: protocol、host、port、path、parameter、anchor。
URN:Universal Resource Name 统一资源名称,通过特定命名 空间中的唯一名称或ID来标识资源。

URL类

统一资源定位符,由4部分组成:协议 、存放资源的主机域名、端口号和资源文件名。


import java.net.MalformedURLException;
import java.net.URL;

public class URLTest {

	public static void main(String[] args) throws MalformedURLException {
		URL url = new URL(\"http://www.baidu.com:80/index.html?uname=shsxt&age=18#a\");
		//获取四个值
		System.out.println(\"协议:\"+url.getProtocol());
		System.out.println(\"域名|ip:\"+url.getHost());
		System.out.println(\"端口:\"+url.getPort());
		System.out.println(\"请求资源1:\"+url.getFile());
		System.out.println(\"请求资源2:\"+url.getPath());
		
		//参数
		System.out.println(\"参数:\"+url.getQuery());
		//锚点
		System.out.println(\"锚点:\"+url.getRef());
	}

}

网络爬虫

获取数据

允许直接获取数据

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
public class SpiderTest01 {

	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\");
		//下载资源
		InputStream is = url.openStream();
		BufferedReader br =new BufferedReader(new InputStreamReader(is,\"UTF-8\"));
		String msg =null;
		while(null!=(msg=br.readLine())) {
			System.out.println(msg);
		}
		br.close();
	}

}

报403,不允许直接获取数据

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
class SpiderTest02 {

	public static void main(String[] args) throws Exception {
		//获取URL
		URL url =new URL(\"https://www.dianping.com\");
		//下载资源
		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/58.0.3029.81 Safari/537.36\");
		BufferedReader br =new BufferedReader(new InputStreamReader(conn.getInputStream(),\"UTF-8\"));
		String msg =null; 
		while(null!=(msg=br.readLine())) {
			System.out.println(msg);
		}
		br.close();
	}

}

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表