一、概念

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类)的更多相关文章

  1. 网络编程(一)——InetAddress

    网络编程(一)--InetAddress InetAddress类在java中代表的是IP地址,它有两个子类分别是Inet4Address和Inet6Address,其中Inet4Address代表的 ...

  2. Java 网络编程(四) InetAddress类

    链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951895.html Java 网络编程(四) InetAddress类 InetAdd ...

  3. Python之路 - 网络编程之粘包

    Python之路 - 网络编程之粘包 粘包

  4. java网络编程(2)InetAddress 类及udp协议

    InetAddress 类 JDK中为开发网络应用程序提供了java.net包,该包下的类和接口差点儿都是为网络编程服务的. InetAddress:用于描写叙述IP地址的对象 InetAddress ...

  5. 2015/12/14 Python网络编程,TCP/IP客户端和服务器初探

    一直不是很清楚服务器的定义,对于什么是服务器/客户端架构也只有一个模糊的感觉.最近开始学习,才明白一些什么服务器和客户端的关系. 所谓的服务器,就是提供服务的东西,它是一个硬件或者软件,可以向一个或者 ...

  6. Java知识回顾 (14)网络编程

    本资料来自于runoob,略有修改. 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细 ...

  7. java:网络编程(InetAddress,InetSocketAddress,URL,TCP(Socket与SeverSocket),TCP与UDP的区别)

    InerAddress: /**IP地址:在网络上唯一标示一台计算机 * 端口号:标示计算机上不同的应用程序 * java.net.InetAddress类:此类表示互联网协议 (IP) 地址. * ...

  8. 8-2udp和tcp网络编程以及粘包和解决粘包的方法

    一  tcp网络编程 server 端 import socket sk=socket.socket() #实例化一个对象 sk.setsockopt(socket.SOL_SOCKET,socket ...

  9. Python学习笔记【第十四篇】:Python网络编程二黏包问题、socketserver、验证合法性

    TCP/IP网络通讯粘包问题 案例:模拟执行shell命令,服务器返回相应的类容.发送指令的客户端容错率暂无考虑,按照正确的指令发送即可. 服务端代码 # -*- coding: utf- -*- # ...

随机推荐

  1. Core.Java.Volume.I.Fundamentals.10th.Edition 14.5.8 Volatile域 中文版 章节勘误

    今天重扫了corejava 14 并发的一章,在谈到volatile域代替synchronized 应用于并发更新时,看到如下内容,并发更新可用内部锁的方式但会带来阻塞问题,可用volatile域替代 ...

  2. Java基础——面向对象

    Hello 大家好,我又来啦,今天我们来说说Java的面向对象. 还记得之前去面试几家公司的实习生职位,大部分面试官都问过我有关面向对象 的问题,不知道以后还会不会问,估计是不会了吧...(:3[▓▓ ...

  3. bnu 4067 美丽的花环

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=4067 美丽的花环 Time Limit: 1000ms Case Time Limit: 1000m ...

  4. "Error: ANDROID_HOME is not set and "android" command not in your PATH. You must fulfill at least one of these conditions.".

    设置环境变量 set ANDROID_HOME=C:\\android-sdk-windows set PATH=%PATH%;%ANDROID_HOME%\tools;%ANDROID_HOME%\ ...

  5. KDTree(Bzoj2648: SJY摆棋子)

    题面 传送门 KDTree 大概就是一个分割\(k\)维空间的数据结构,二叉树 建立:每层选取一维为关键字,把中间的点拿出来,递归左右,有个\(STL\)函数nth_element可以用一下 维护:维 ...

  6. 【Android】利用回收机制创建ListView列表实现

    MainActivity.java package com.glandroid.listviewdemo; import android.graphics.Color; import android. ...

  7. CSS的下拉菜单被挡住,修改Z-INDEX也不成功

    CSS的下拉菜单被挡住,修改Z-INDEX也不成功 做了一个鼠标放上去就出现的下拉菜单,但是这个下拉的内容被挡住了. Z-INDEX 是设置不同块的层次的,我修改了问题还是有. 后来发现是必须要把该便 ...

  8. win10命令控制符

    IP:ipconfigIP地址侦测器:Nslookup显卡:dxdiag控制面板:control电话拨号:dialer木马捆绑工具,系统自带:iexpress本地用户和组:lusrmgr.msc鼠标属 ...

  9. Mongodb的入门(7)window安装mongodb4

    Mongodb4: MongoDB CTO Eliot Horowitz 刚刚于2月16日凌晨在MongoDB西雅图大会上宣布,MongoDB将在4.0版本中正式推出多文档ACID事务支持 . “Mo ...

  10. 基于Vue的WebApp项目开发(六)

    实现商品购买列表页面 步骤一:新建goodslist.vue文件 <template> <div id="tml"> <!--利用mui中的图文表格组 ...