[19/04/14-星期日] 网络编程_java.net包(InetAddress类、InetSocketAddress类、URL类)
一、概念
Java为了可移植性,不允许直接调用操作系统,而是由java.net包来提供网络功能。Java虚拟机负责提供与操作系统的实际连接。
InetAddress
作用:封装计算机的IP地址和DNS(没有端口信息)。
注:DNS是Domain Name System,域名系统。
特点:这个类没有构造方法。如果要得到对象,只能通过静态方法:getLocalHost()、getByName()、 getAllByName()、 getAddress()、getHostName()。
InetSocketAddress
作用:包含IP和端口信息,常用于Socket通信。此类实现 IP 套接字地址(IP 地址 + 端口号),不依赖任何协议。
/***
* IP:定位一个节点(计算机】路由器) 区分小区,定位主机
* 端口(2个字节,16位,0-65535):区分房间,定位具体软件 如: 8080:Tomcat服务器 ,1521:Oracle服务器,3306:mysql服务器
* 查看所有端口:netstat -ano ;查看指定端口:netstat -ano|findstr "8080" ;查看指定进程:talklist|findstr "3272"
* (8080为某个具体端口的名字,3272为某个具体进程的名字)
*
*/
package cn.sxt.net; import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException; public class Test_0413_Net {
public static void main(String[] args) throws UnknownHostException {
//通过getLocalHost()方法创建InetAddress对象,操作本机信息
InetAddress addr = InetAddress.getLocalHost();// host:主机,主人
System.out.println(addr.getHostAddress());//获取本机IP
System.out.println(addr.getHostName());//获得本机名字 //根据域名获得计算机节点信息
InetAddress addr2 = InetAddress.getByName("www.baidu.com");
System.out.println(addr2.getHostAddress()); // 返回百度服务器的IP:220.181.112.244
System.out.println(addr2.getHostName());//返回百度的服务器的名字:www.baidu.com //根据IP获得计算机节点信息
InetAddress addr3 = InetAddress.getByName("59.110.14.7");
System.out.println(addr3.getHostAddress()); // 返回sxt服务器的IP:59.110.14.7
System.out.println(addr3.getHostName());//输出ip而不是域名。如果这个IP地址不存在或DNS服务器不允许进行IP地址
//和域名的映射,getHostName方法就直接返回这个IP地址。 //套接字,端口 InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1", 8080);//地址,端口号
InetSocketAddress socketAddress2 = new InetSocketAddress("localhost", 9000);//域名,端口号,localhost 本机域名
System.out.println(socketAddress.getAddress());
System.out.println(socketAddress.getHostName());
System.out.println(socketAddress.getPort());//获得端口号 System.out.println(socketAddress2.getAddress());
} }
URL类
/*** 网络3大基石:html、 url、 http
* URD:统一资源名称 如:磁力链接
* URL:统一资源定位符 http://www.baidu.com:80/index.html
* 包含:协议,域名/计算机,端口(默认80),请求资源
*/
package cn.sxt.net; import java.net.MalformedURLException;
import java.net.URL; public class Test_0414_URL {
public static void main(String[] args) throws MalformedURLException {
URL u = new URL("http://www.google.cn:80/index.html?uname=shsxt&age=18#a");//"?" 参数 标志 , "#" 锚点标志
System.out.println("协议:" + u.getProtocol());//协议:http ,Protocol:协议,草案
System.out.println("主机名:" + u.getHost()); //域名: www.google.cn
System.out.println("端口:" + u.getPort()); //端口号:80
System.out.println("请求资源:" + u.getFile()); // 端口号后面,锚点前的所有内容:index.html?uname=shsxt&age=18
System.out.println("路径:" + u.getPath()); // 端口号后面,参数前的所有内容 index.html System.out.println("参数部分:" + u.getQuery());//参数内容: uname=shsxt&age=18 Query:查询,询问
System.out.println("锚点部分:" + u.getRef());//锚点内容: a System.out.println("获取与此url关联的协议的默认端口:" + u.getDefaultPort()); URL u1 = new URL("http://www.abc.com/aa/");
URL u2 = new URL(u, "2.html"); // 相对路径构建url对象
System.out.println(u2.toString()); // http://www.abc.com/aa/2.html } }
/***
* 模拟网络爬虫 模拟浏览器
*/
package cn.sxt.net; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL; import javax.net.ssl.HttpsURLConnection; public class Test_0414_Spider {
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");
HttpURLConnection con=(HttpURLConnection)url.openConnection();//应对网站的反爬的办法
con.setRequestMethod("GET");//从服务器请求数据 ,模拟浏览器的get请求
con.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"); //下载资源
//InputStream iStream=url.openStream();
BufferedReader bReader=new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF-8"));
String msg=null;
while ((msg=bReader.readLine())!=null) {
System.out.println(msg); }
bReader.close();
//分析 } }
[19/04/14-星期日] 网络编程_java.net包(InetAddress类、InetSocketAddress类、URL类)的更多相关文章
- 网络编程(一)——InetAddress
网络编程(一)--InetAddress InetAddress类在java中代表的是IP地址,它有两个子类分别是Inet4Address和Inet6Address,其中Inet4Address代表的 ...
- Java 网络编程(四) InetAddress类
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951895.html Java 网络编程(四) InetAddress类 InetAdd ...
- Python之路 - 网络编程之粘包
Python之路 - 网络编程之粘包 粘包
- java网络编程(2)InetAddress 类及udp协议
InetAddress 类 JDK中为开发网络应用程序提供了java.net包,该包下的类和接口差点儿都是为网络编程服务的. InetAddress:用于描写叙述IP地址的对象 InetAddress ...
- 2015/12/14 Python网络编程,TCP/IP客户端和服务器初探
一直不是很清楚服务器的定义,对于什么是服务器/客户端架构也只有一个模糊的感觉.最近开始学习,才明白一些什么服务器和客户端的关系. 所谓的服务器,就是提供服务的东西,它是一个硬件或者软件,可以向一个或者 ...
- Java知识回顾 (14)网络编程
本资料来自于runoob,略有修改. 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细 ...
- java:网络编程(InetAddress,InetSocketAddress,URL,TCP(Socket与SeverSocket),TCP与UDP的区别)
InerAddress: /**IP地址:在网络上唯一标示一台计算机 * 端口号:标示计算机上不同的应用程序 * java.net.InetAddress类:此类表示互联网协议 (IP) 地址. * ...
- 8-2udp和tcp网络编程以及粘包和解决粘包的方法
一 tcp网络编程 server 端 import socket sk=socket.socket() #实例化一个对象 sk.setsockopt(socket.SOL_SOCKET,socket ...
- Python学习笔记【第十四篇】:Python网络编程二黏包问题、socketserver、验证合法性
TCP/IP网络通讯粘包问题 案例:模拟执行shell命令,服务器返回相应的类容.发送指令的客户端容错率暂无考虑,按照正确的指令发送即可. 服务端代码 # -*- coding: utf- -*- # ...
随机推荐
- Win7系统下网站发布IIS配置
*本帖为个人收集贴,所有版权归:西门的后花园 http://ons.me* Technorati 标记: IIS,网站,发布,配置 一.首先是安装IIS.打开控制面板,找到“程序与功能”,点进去 二. ...
- 一:Jquery-selector
一:jQuery概述 1.基本功能 a.访问和操作DOM元素:获取元素,修改其样式和内容,删除元素,复制元素... b.对页面事件的处理:不需要指定事件中的函数名,直接在事件中绑定响应函数(匿名函数) ...
- 11、Map、可变参数、Collections
Map接口 Map集合概述 *A:Map集合概述: 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同 a:Collection中的集合,元素 ...
- 设计模式入门,适配器模式,c++代码实现
// test07.cpp : Defines the entry point for the console application.// #include "stdafx.h" ...
- MySQL:入门
一.前言 MySQL :是用于管理数据的软件 MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性. 分为服务端和客户 ...
- Bootstrap网格
首先了解一下,什么是网格? 在平面设计中,网格是一种由一系列用于组织内容的相交的直线(垂直的.水平的)组成的结构(通常是二维的).它广泛应用于打印设计中的设计布局和内容结构.在网页设计中,它是一种用于 ...
- 关于 Table 表格那些三两事儿
引言 实现下列表格样式,嵌套与form表单中提交信息,为了让自己的表格可以“ 随心所欲 ” 变换自己的形式,需要两个重要的td 属性colspan 列合并 以及 rowspan 行合并 来实现,表格宽 ...
- 远景GIS云产品规划
远景GIS云平台在初期有过产品设计,随着研发工作的进行以及对GIS云的认知更进行一步,最近重新梳理了平台的产品规划,使以后的开发不至于走偏方向. GIS云平台的研发也是摸着石头过河,免不了有考虑不到的 ...
- IhyerDB modBus采集器配置.
近期查了一下ihyerDB-modbus采集器的相关配置,由于没有相关的modbus设备,于是今天上午根据网上的线索下载了Modbus Slave(modbus从站仿真器).笔记本也没有串口,于是下载 ...
- APM飞控系统详细介绍
APM飞控系统详细介绍2013-04-05 12:28:24 来源: 评论:2 点击:10303 APM飞控系统是国外的一个开源飞控系统,能够支持固定翼,直升机,3轴,4轴,6轴飞行器.在此我 ...