Java---网络编程

文章目录

    • 1. 网络编程概述
    • 2. InetAddress
    • 3. 端口和协议
    • 4. Java网络API
    • 5. URL
    • 6. URLConnection类


1. 网络编程概述

 1. 计算机网络:是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

在这里插入图片描述

 2. 网络编程:在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换。

 3. 网络编程三要素:IP地址、端口和协议。

在这里插入图片描述

 4. 协议:IPv4协议和IPv6协议。常用命令:(1) ipconfig:查看本机IP地址。 (2) ping IP地址:检查网络是否连通。

在这里插入图片描述

2. InetAddress

 为了方便我们对IP地址的获取和操作,Java提供了一个类InetAddress供我们使用。此类表示Internet协议地址。

方法名说明
static InetAddress getByName(String host)确认主机名称的IP地址,主机名称可以是机器名称,也可以是IP地址
String getHostName()返回此IP地址的主机名
String getHostAddress()返回文本显示中的IP地址字符串
public class InetDemo {
    public static void main(String[] args) throws UnknownHostException {
        InetAddress address = InetAddress.getByName("111");
        String name= address.getHostName();
        String ip= address.getHostAddress();
        System.out.println("主机名:"+name);
        System.out.println("IP地址:"+ip);
    }
}

3. 端口和协议

 1. 端口:设备上应用程序的唯一标识,取值范围是0-65535。

 2. 在计算机网络中,连接和通信的规则被称为网络通信协议。

在这里插入图片描述
在这里插入图片描述

4. Java网络API

在这里插入图片描述

import java.io.*;
import java.net.*;

public class Server  {
    public static void main(String[] args) throws IOException {
        //声明并初始化一个名为serverSocket的ServerSocket对象,让它监听8080端口。
        ServerSocket serverSocket = new ServerSocket(8080);
        System.out.println("Server is listening on port 8080");

        while (true) {
            Socket socket = serverSocket.accept();
            new ServerThread(socket).start();
        }
    }
}
class ServerThread extends Thread {
    private Socket socket;

    public ServerThread(Socket socket) {
        this.socket = socket;
    }
    //这是线程的执行方法。当线程启动时,它会自动调用这个方法。
    public void run() {
        try {
            InputStream input = socket.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));
            OutputStream output = socket.getOutputStream();
            PrintWriter writer = new PrintWriter(output, true);
            String text;
            while ((text = reader.readLine()) != null) {
                System.out.println("Server received: " + text);
                writer.println("Echo: " + text);
            }
            socket.close();
        } catch (IOException ex) {
            System.out.println("Server exception: " + ex.getMessage());
            ex.printStackTrace();
        }
    }
}
import java.io.*;
import java.net.*;

public class Client {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 8080);
        System.out.println("Connected to the server");

        InputStream input = socket.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));

        OutputStream output = socket.getOutputStream();
        PrintWriter writer = new PrintWriter(output, true);

        writer.println("Hello Server");
        String response = reader.readLine();
        System.out.println(response);

        socket.close();
    }
}

在这里插入图片描述

5. URL

 1. URL(Uniform Resource Locator,统一资源定位器)表示互联网上某一资源的地址。

 2. URL可以由协议名、主机、端口和资源四个部分组成,其语法为:protocol://host:port/resourceName

  • protocol是协议名。
  • host是主机名。
  • port是端口。
  • resourceName是资源名。

 3. URL类常用方法如下图所示:

在这里插入图片描述

import java.io.*;
import java.net.URL;

public class Demo {
    public static void main(String[] args) throws IOException {
        URL mybook=new URL("https://yiyan.baidu.com/");
        System.out.println("协议 protocol= "+mybook.getProtocol());
        System.out.println("主机 host= "+mybook.getHost());
        System.out.println("端口 port= "+mybook.getPort());
        System.out.println("文件 filename= "+mybook.getFile());
        System.out.println("路径 path= "+mybook.getPath());
    }
}

在这里插入图片描述

6. URLConnection类

 1. URLConnection代表与URL指定的数据源的动态连接,允许使用POST或PUT和其他HTTP请求方法将数据送回服务器。

 2. URLConnection常用方法:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity 0GC或者最大限度降低GC方案

文章目录 GC带来的问题性能瓶颈玩家体验受损 优化关键点1. **对象池技术**:2. **内存管理优化**:3. **UGUI优化**:4. **ECS架构下的优化**:5. **资源管理**:6. **自定义数据结构与算法**:7. **开启增量GC&a…

网络嗅探器的设计与实现(2024)-转载

1.题目描述 参照 raw socket 编程例子,设计一个可以监视网络的状态、数据流动情况以及网络上传输 的信息的网络嗅探器。 2.运行结果 3.导入程序需要的库 请参考下面链接: 导入WinPcap到Clion (2024)-CSDN博客 4.参考代码 #define HAVE_REMOTE #define LINE_LEN …

一起玩儿物联网人工智能小车(ESP32)——24. 变量与函数(二)

摘要:本文介绍变量和函数的基本知识 在前面一篇中了解了变量,接着就来了解一下函数。函数是程序中的一个关键概念,它可以简化程序的编写,使代码更加模块化、可复用,提高程序的可读性。其实在之前已经多次遇到函数了&am…

VELO维乐携手【晓饰记】创始人胡晓,引领潮流新饰界!

不知道大家还记不记得2023年维乐带着自己满满的诚意闪现英伦时尚之都为全世界带来了一场无与伦比的视觉盛宴!而依照维乐固有的执念,从不会让自己止步的精神,维乐又带着自己的维乐坐垫找到了CoCo胡晓,【晓饰记】的首饰品牌创始人、…

Video classification with UniFormer基于统一分类器的视频分类

本文主要介绍了UniFormer: Unified Transformer for Efficient Spatial-Temporal Representation Learning 代码:https://github.com/Sense-X/UniFormer/tree/main/video_classification UNIFormer 动机 由于视频具有大量的局部冗余和复杂的全局依赖关系&#xf…

Matplotlib for C++不完全手册

matplotlib-cpp是Matplotlib(MPL)为C提供的一个用于python的matplotlib绘图库的C包装器。它的构建类似于Matlab和matplotlib使用的绘图API。 However, the function signatures might differ and Matplotlib for C does not support the full functional…

Java学习苦旅(二十六)——反射,枚举和lamda表达式

本篇博客将讲解反射,枚举和lamda表达式。 文章目录 反射定义用途反射基本信息反射相关的类Class类Class类中相关的方法 反射示例反射的优缺点优点缺点 枚举背景及定义常用方法枚举优缺点优点缺点 Lambda表达式背景语法函数式接口定义基本使用 变量捕获Lambda在集合…

在drawio中使用BPMN2.0绘制详细的业务流程图和编排模型

在drawio中使用BPMN2.0绘制详细的业务流程图和编排模型 drawio是一款强大的图表绘制软件,支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用,则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功…

Qt pro文件

1. 项目通常结构 2.pri文件 pri文件可定义通用的宏,例如创建一个COMMON.pri文件内容为 COMMON_PATH D:\MyData 然后其它pri或者pro文件如APPTemplate.pro文件中通过添加include(Common.pri) ,QtCreator就会自动在项目结构树里面创建对应的节点 3.变量…

如何信任机器学习模型的预测结果?

在本篇中,我将通过一个例子演示在 MATLAB 如何使用 LIME 进行复杂机器学习模型预测结果的解释。 我使用数据集 carbig(MATLAB 自带的数据集)训练一个回归模型,用于预测汽车的燃油效率。数据集 carbig 是 70 年代到 80 年代生产的汽…

Android AIDL 创建的DEMO

使用AIDL创建一个demo 主要参考文件, 以及其他地址 Android 接口定义语言 (AIDL) | Android 开发者 | Android Developers 绑定服务概览 | Android 开发者 | Android Developers Android 接口定义语言 (AIDL) Android 接口定义语言 (AIDL) 与您可能使用…

倍思科技红海突围要义:紧随新趋势,“实用而美”理念从一而终

移动数码周边市场始终不缺热度。 销售端是业绩的节节高升,如在2023年京东双十一,移动数码周边产品销售成果丰硕,根据京东战报,大功率充电器成交额同比提升 200%,65W以上移动电源成交额同比提升 150%,自带线…

服务器内存不足怎么办?会有什么影响?

服务器内存,也被称为RAM(Random Access Memory),是一种临时存储设备,用于临时存放正在运行的程序和数据。它是服务器上的超高速存储介质,可以快速读取和写入数据,提供给CPU进行实时计算和操作。…

Python基础入门第八课笔记(自定义函数 lambda)

什么时候用lambda表达式? 当函数有一个返回值,且只有一句代码,可以用lambda简写。 2、lanbda语法 lambda 形参 : 表达式 注意: 1、形参可以省略,函数的参数在lambda中也适用 2、lambda函数能接收任何数量的参数但只能…

Dockerfile的EXPOSE

文章目录 环境总结测试使用EXPOSE测试1:不做端口映射测试2:-p 8080:80测试3:-P测试4:--networkhost 不使用EXPOSE 参考 环境 RHEL 9.3Docker Community 24.0.7 总结 如果懒得看测试的详细信息,可以直接看结果&#…

MYSQL篇--sql优化高频面试题

sql优化 1 如何定位及优化SQL语句的性能问题?创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因? 其实对于性能比较低的sql语句定位,最重要的也是最有效的方法其实还是看sql的执行计划,而对于mysql来说 它…

228. 汇总区间

给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b] 应该按…

[C#]使用onnxruntime部署yolov8-onnx实例分割模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新…

OpenCV图像处理|1.1 OpenCV介绍与环境搭建

1.1.1 介绍 OpenCV(Open Source Computer Vision Library)开放源代码计算机视觉库,主要算法涉及图像处理、计算机视觉和机器学习相关方法。OpenCV 其实就是一堆 C 和 C语言的源代码文件,这些源代码文件中实现了许多常用的计算机视…

智慧医院预约及支付平台—智慧支付

医保支付流程 自费支付流程 智慧医院支付业务介绍 社保卡绑定(身份认证) 认证方案:银行身份已验证客户,可通过本人银行登记的手机号码登录医院APP后,在完善APP注册身份信息时,将相关信息发送苏州银行,由银行核对客户身份信息正确性并将社保卡绑定本人手机。核实后的身份…