Java实例——网络实例

news2024/11/29 0:42:28

1、主机IP地址获取
步骤一:获取主机InetAddress
步骤二:获取主机IP地址

        InetAddress address = null;
        try {
            address = InetAddress.getByName("www.baidu.com");
        }
        catch (UnknownHostException e) {
            System.exit(2);
        }
        System.out.println("HostName" + "\t\t"
                + "IPAddress");
        System.out.println(address.getHostName() + "\t\t"
                + address.getHostAddress());
        System.exit(0);

输出结果

HostName		IPAddress
www.baidu.com		180.101.50.242

2、查看端口使用情况

   public static void main(String[] args) {
      Socket Skt;
      String host = "localhost";
      if (args.length > 0) {
         host = args[0];
      }
      for (int i = 0; i < 1024; i++) {
         try {
            System.out.println("查看 "+ i);
            Skt = new Socket(host, i);
            System.out.println("端口 " + i + " 已被使用");
         }
         catch (UnknownHostException e) {
            System.out.println("Exception occured"+ e);
            break;
         }
         catch (IOException e) {
         }
      }
   }

输出结果

……
查看 17
查看 18
查看 19
查看 20
查看 21
端口 21 已被使用
查看 22
查看 23
查看 24
……

3、获取本机ip地址及主机名

    public static void main(String[] args) throws IOException, InterruptedException {
        InetAddress inetAddress = InetAddress.getByName("www.baidu.com");
        System.out.println("主机IP地址:"+inetAddress.getHostAddress());
        System.out.println("主机名称:"+inetAddress.getHostName());
    }

输出结果

主机IP地址:180.101.50.242
主机名称:www.baidu.com

4、获取文件大小
步骤一:获取URL对象 new URL(“资源路径”);
步骤二:连接URL链接 URLConnection conn = url.openConnection();
步骤三:获取文件大小 conn.getContentLength();

URL url = new URL("资源路径");	//获取URL对象
URLConnection conn = url.openConnection();	//打开URL资源器
int size = conn.getContentLength();	//文件大小

5、多线程Socket

public class dictoryImpl implements Runnable {
    Socket clientSocket;

    public dictoryImpl(Socket clientSocket) {
        this.clientSocket = clientSocket;
    }

    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(1234);
        System.out.println("listening");

        while(true){
            Socket socket = serverSocket.accept();
            System.out.println("connectionLocalPort:"+socket.getLocalPort());
            System.out.println("connectionCurrentPort:"+socket.getPort());
            new Thread(new dictoryImpl(socket)).start();
        }
    }

    @Override
    public void run() {
        try {
            PrintStream printStream = new PrintStream(clientSocket.getOutputStream());
            for (int i = 0; i < 100; i++) {
                printStream.println(i + " bottles of beer on the wall.");
            }
            printStream.close();
            clientSocket.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

class client{
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost",1234);
        socket.close();
    }
}

输出结果

listening
connectionLocalPort:1234
connectionCurrentPort:3799

6、查看主机指定文件的最后修改时间

    public static void main(String[] args) throws IOException {
        URL url = new URL("资源路径");
        URLConnection uc = url.openConnection();
        uc.setUseCaches(false);
        long timestamp = uc.getLastModified();
        System.out.println("java.bmp 文件最后修改时间 :"+timestamp);
    }

7、使用Socket连接到指定主机

    public static void main(String[] args) throws IOException {
        InetAddress inetAddress;
        Socket socket = new Socket("www.baidu.com",80);
        inetAddress = socket.getInetAddress();
        System.out.println("连接到 "+inetAddress);
        socket.close();
    }

输出结果

连接到 www.baidu.com/180.101.50.188

8、网页抓取

    public static void main(String[] args) throws IOException {
        URL url = new URL("https://blog.csdn.net/Zain_horse/article/details/129048338");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));
        String line;
        while ((line = bufferedReader.readLine()) != null){
            System.out.println(line);
        }
        bufferedReader.close();
    }

输出结果
在这里插入图片描述
9、获取响应头日期

    public static void main(String[] args) throws IOException {
        URL url = new URL("https://blog.csdn.net/Zain_horse/article/details/129048338");
        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
        long date = httpURLConnection.getDate();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
        if (date == 0){
            System.out.println("无法获取Header");
        }else {
            System.out.println("Date:"+simpleDateFormat.format(date));
        }
    }

输出结果

Date:2023-02-22 22:08:26 下午

10、获取相应头信息

    public static void main(String[] args) throws IOException {
        URL url = new URL("https://blog.csdn.net/Zain_horse/article/details/129048338");
        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
        Map<String, List<String>> listMap = httpURLConnection.getHeaderFields();
        Set<String> keySet = listMap.keySet();
        for (String key:keySet) {
            String val = httpURLConnection.getHeaderField(key);
            System.out.println(key+":"+val);
        }
    }

输出结果

Keep-Alive:timeout=20
Transfer-Encoding:chunked
null:HTTP/1.1 200 OK
Strict-Transport-Security:max-age= 31536000
Server:openresty
Connection:keep-alive
Set-Cookie:dc_session_id=10_1677075301490.865484; Expires=Thu, 01 Jan 2025 00:00:00 GMT; Path=/; Domain=.csdn.net;
Vary:Accept-Encoding
Content-Language:en-US
Date:Wed, 22 Feb 2023 14:15:01 GMT
Content-Type:text/html;charset=utf-8

11、解析URL

    public static void main(String[] args) throws IOException {
        URL url = new URL("https://blog.csdn.net/Zain_horse/article/details/129048338");
        System.out.println(url);
        System.out.println(url.getProtocol()+"://"+url.getHost()+url.getPort()+url.getPath());
    }

输出结果

https://blog.csdn.net/Zain_horse/article/details/129048338
https://blog.csdn.net-1/Zain_horse/article/details/129048338

12、C/S Socekt之间通信

服务器端建立过程:

  • 服务器建立通信ServerSocket
  • 服务器建立Socket接收客户端连接
  • 建立IO输入流读取客户端发送的数据
  • 建立IO输出流向客户端发送数据消息

ServerSocket 服务器端

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
   public static void main(String[] args) {
      try {
         ServerSocket ss = new ServerSocket(8888);
         System.out.println("启动服务器....");
         Socket s = ss.accept();
         System.out.println("客户端:"+s.getInetAddress().getLocalHost()+"已连接到服务器");
         
         BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
         //读取客户端发送来的消息
         String mess = br.readLine();
         System.out.println("客户端:"+mess);
         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
         bw.write(mess+"\n");
         bw.flush();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

客户端Client建立过程:

  • 创建Socket通信,设置通信服务器的IP和Port
  • 建立IO输出流向服务器发送数据消息
  • 建立IO输入流读取服务器发送来的数据消息
    ClientSoceket 客户端
/*
 author by w3cschool.cn
 Main.java
 */

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
   public static void main(String[] args) {
      try {
         Socket s = new Socket("127.0.0.1",8888);
         
         //构建IO
         InputStream is = s.getInputStream();
         OutputStream os = s.getOutputStream();
         
         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
         //向服务器端发送一条消息
         bw.write("测试客户端和服务器通信,服务器接收到消息返回到客户端\n");
         bw.flush();
         
         //读取服务器返回的消息
         BufferedReader br = new BufferedReader(new InputStreamReader(is));
         String mess = br.readLine();
         System.out.println("服务器:"+mess);
      } catch (UnknownHostException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}
服务器端结果:
启动服务器....

客户端结果:
服务器:测试客户端和服务器通信,服务器接收到消息返回到客户端

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聚类(性能度量)

文章目录聚类&#xff08;性能度量&#xff09;外部指标例1内部指标例2聚类&#xff08;性能度量&#xff09; 对数据集 D{x1,x2,...,xm}D\{x_1,x_2,...,x_m\}D{x1​,x2​,...,xm​} &#xff0c;假定通过聚类给出的簇划分为 C{C1,C2,...,Ck}C\{C_1,C_2,...,C_k\}C{C1​,C2​,…

计算机组成原理错题

静态RAM&#xff08;SRAM&#xff09;和动态RAM&#xff08;DRAM&#xff09;的基本电路图不同&#xff0c;因此可以通过观察存储器的基本电路图来判断它属于哪一类。 静态RAM的基本电路图包括一个存储单元和一个数据选择器。每个存储单元由一个触发器&#xff08;flip-flop&a…

汽车零部件企业数字工厂管理系统建设方案

在汽车零部件制造领域&#xff0c;伴随工业信息化与机器人化&#xff0c;制造模式逐渐从 CAD/CAE/CAM 数字化设计及加工走向全产品周期虚拟现实的数字化工厂管理系统平台&#xff0c;实现虚拟现实设计制造&#xff0c;防范产品缺陷并预防设备故障&#xff0c;大幅提高生产效率。…

做出选择,直面挑战,揭开数据中心网络的发展真相

为什么&#xff1f;你们发现没有&#xff1f;不知道&#xff0c;从什么时候开始&#xff0c;这个世界&#xff0c;变得越来越快了。快得仿佛昨天刚刚来到这个世界&#xff0c;一眨眼就日暮西山了。是的&#xff0c;时间过得好快&#xff0c;回想起2002年7月电气和电子工程师协会…

炼石:八年饮冰难凉热血,初心如磐百炼成钢

炼石成立八周年 八载笃行&#xff0c;踔厉奋发。创立于2015年的炼石&#xff0c;今天迎来了八岁生日&#xff0c;全体员工共同举行了温暖又充满仪式感的周年庆典。过去的2022&#xff0c;是三年疫情的艰难“收官之年”&#xff0c;新的2023&#xff0c;将是数据安全行业成为独…

FFT的物理意义

FFT结果的物理意义 FFT是离散傅立叶变换的快速算法&#xff0c;可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的&#xff0c;但是如果变换到频域之后&#xff0c;就很容易看出特征了。这 就是很多信号分析采用FFT变换的原因。另外&#xff0c;FFT可以将一…

内网渗透(四十九)之域控安全和跨域攻击-多种方式离线读取ntds.dit文件中的hash值

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

Java方法【未完待续】

目录 前言 一、什么是方法&#xff1f; 二、方法的定义和调用 方法的定义 方法的调用 三、方法的重载 重载规则 实现理论 总结 前言 随着对Java这一编程语言的深入学习&#xff0c;大家可能会遇到一个熟悉又陌生的词——方法&#xff0c;其实Java方法就是我们学习C/C时…

2023该好好赚钱了,推荐三个下班就能做的副业

在过去的两年里&#xff0c;越来越多的同事选择辞职创业。许多人通过互联网红利赚到了他们的第一桶金。随着短视频的兴起&#xff0c;越来越多的人吹嘘自己年收入百万&#xff0c;导致很多刚进入职场的年轻人逐渐迷失自我&#xff0c;认为钱特别容易赚。但事实上&#xff0c;80…

构造agent类型的内存马(内存马系列篇十三)

写在前面 前面我们对JAVA中的Agent技术进行了简单的学习&#xff0c;学习前面的Agent技术是为了给这篇Agent内存马的实现做出铺垫&#xff0c;接下来我们就来看看Agent内存马的实现。 这是内存马系列篇的第十三篇了。 环境搭建 我这里就使用Springboot来搭建一个简单的漏洞…

电脑病毒已灭绝,是真的吗?

大家有没有这样一个疑问&#xff0c;觉得自己的电脑好像很久没有电脑病毒了&#xff1f;之前大名鼎鼎的蠕虫2000&#xff0c;熊猫烧香都变得不那么常见了。到底是电脑因为自身优化和杀毒软件的防护导致病毒变少了&#xff0c;还是本身电脑病毒变少了呢&#xff1f;&#xff08;…

Boost库文档搜索引擎

文章目录综述效果展示去标签化&#xff0c;清理数据构建索引用户查询综述 该项目使用了BS架构&#xff0c;实现了用户对Boost库进行站内搜索的功能&#xff0c; 用户输入关键字使用http协议通过ajax将数据发送给后端服务器&#xff0c;后端进行分词&#xff0c; 通过倒排索引…

【Kubernetes】第七篇 - Service 服务介绍和使用

一&#xff0c;前言 上一篇&#xff0c;通过配置一个 Deployment 对象&#xff0c;在内部创建副本集对象&#xff0c;副本集帮我们创建了 3 个 pod 副本 由于 pod 存在 IP 漂移现象&#xff0c;pod 的创建和重启会导致 IP 变化&#xff1b; 本篇&#xff0c;介绍 Service 服…

《计算机网络:自顶向下方法》实验5:NAT协议分析 Wireshark实验

实验12:NAT协议分析 1 What is the IP address of the client? 客户端的 IP 地址是192.168.1.100 2 The client actually communicates with several different Google servers in order to implement “safe browsing.” (See extra credit section at the end of this la…

Safety-Gym环境配置与安

官网&#xff1a; https://github.com/openai/safety-gym https://github.com/openai/safety-starter-agents 一、安装依赖环境配置 建议使用python 3.7及以下环境&#xff0c;因为官方的safety-rl是基于tensorflow1.13.1实现&#xff0c;而tensorflow1.13.1只能支持python…

leaflet 自定义添加地图网格线(087)

第087个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中自定义添加地图网格线。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共76行)安装插件相关API参考:专栏目标示例效果 配置方式 1)查看基…

前端学习第九站——Vue3基础篇

目录 一、环境搭建 创建项目 编码 IDE 修改端口 配置代理 项目架构 二、Vue组件 main.ts 属性绑定 事件绑定 表单绑定 计算属性 xhr axios 环境变量 baseURL 拦截器 条件和列表 监听器 vueuse useRequest usePagination&#xff08;分页&#xff09; 子组…

你什么档次?敢和我用一样的即时通讯平台WorkPlus?

现今&#xff0c;很多企业越来越青睐私有化部署&#xff0c;尤其是在选择组织内部即时通讯平台的时候&#xff0c;更是会提出私有化部署的需求。究其原因&#xff0c;企业选择私有化部署即时通讯软件完全是出于安全方面考虑。因此&#xff0c;越来越多的企业将眼光望向了本地化…

深入讲解CFS组调度!(上)

注&#xff1a;本文缩写说明 一、CFS组调度简介 1.1. 存在的原因 总结来说是希望不同分组的任务在高负载下能分配可控比例的CPU资源。为什么会有这个需求呢&#xff0c;比如多用户计算机系统每个用户的所有任务划分到一个分组中&#xff0c;A用户90个相同任务&#xff0c;而B…

NIO蔚来 面试——IP地址你了解多少?

目录 前言 1、IP地址 1.1、什么是IP地址 1.2、IP地址的格式 1.2.1、32位二进制数表示IP地址&#xff0c;够用吗&#xff1f; 1.3、IP地址的组成 1.4、为什么会出现IPv6 1.4.1、为什么IPv6还没有大量普及呢&#xff1f; 1.5、子网掩码 1.6、特殊的IP地址 2、路由选择 …