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常用方法:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring实战】15 Logback

文章目录 1. 依赖2. 配置3. 打印日志4. 启动程序5. 验证6. 调整日志级别7. 代码详细总结 Spring 作为一个现代化的 Java 开发框架,提供了很多便利的功能,其中包括灵活而强大的日志记录。本文将介绍如何结合 Spring 和 Logback 配置和使用日志&#xff0c…

Bytebase:统一数据库 CI/CD 解决方案 | 开源日报 No.128

bytebase/bytebase Stars: 7.9k License: NOASSERTION Bytebase 是一个数据库 CI/CD 解决方案,为开发人员和 DBA 提供统一的工具来管理不同数据库系统的开发生命周期。其主要功能包括标准化操作流程、SQL 代码审查、GitOps 集成以及数据访问控制等。关键特性和核心…

Ubuntu之修改时区/时间

1、查看当前时间及时区状态 sudo timedatectl status # 显示当前时区为Asia/Shanghai 2、查看当前系统时间 sudo date 3、查看当前系统时间及时区 sudo date -R # 显示当前时间及对应时区,时区为“0800”北京时区 4、修改硬件时间 修改日期格式&#xff1a…

Django 后台与便签

1. 什么是后台管理 后台管理是网页管理员利用网页的后台程序管理和更新网站上网页的内容。各网站里网页内容更新就是通过网站管理员通过后台管理更新的。 2. 创建超级用户 1. python .\manage.py createsuperuser 2. 输入账号密码等信息 Username (leave blank to use syl…

Android ImageView的Bitmap在scaleType情况下Bitmap顶部与底部RectF坐标,Kotlin

Android ImageView的Bitmap在scaleType情况下&#xff0c;Bitmap顶部与底部RectF坐标&#xff0c;Kotlin 通常&#xff0c;在ImageView设置scaleType后&#xff0c;Android会把原始图片通过缩放放在ImageView里面&#xff0c;例如&#xff1a; <ImageViewandroid:id"id…

龙迅#LT7911UX适用于Type-C/DP1.4a/EDP转MIPI或LVDS应用方案,分辨率高达8K30HZ ,可支持图像处理和旋转功能!

1. 产品描述 LT7911UX是一款高性能Type-C/DP1.4a/EDP转MIPI或LVDS芯片。 HDCP RX作为HDCP直放站的上游&#xff0c;可以与其他芯片的HDCP TX配合&#xff0c;实现直放站功能。 对于 DP1.4a 输入&#xff0c;LT7911UX可配置为 1/2/4 通道。自适应均衡使其适用于长电缆应用&…

代码随想Day55 | 392.判断子序列、115.不同的子序列

392.判断子序列 第一种思路是双指针&#xff0c;详细代码如下&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {//双指针if(s.empty()&&t.empty()) return true;int i0,j0;while(i<t.size()){if(s[j]t[i]) j;if(js.size()) return t…

FPGA - 240102 - FPGA期末速成

TAG - F P G A 、期末、速成 FPGA、期末、速成 FPGA、期末、速成 // – 习题1 – //CPLD&#xff08;Complex Programmable Logic Device&#xff09;是 Complex PLD 的简称&#xff0c;一种较 PLD 为复杂的逻辑元件。CPLD 逻辑资源多寄存器少&#xff0c;FPGA 逻辑弱而寄存器…

深度学习|2.11 向量化vectorization

2.11 向量化的作用 向量化可以使得向量中的每一个维度的数据进行并行计算&#xff0c;从而加快了神经网络的计算速度。 验证 其他

最优化总结

最优化 引入问题例1 运输问题例2 生产计划问题例3 指派问题例4 数据拟合问题 线性规划向量和矩阵范数拟合线性拟合非线性拟合 无约束最优化问题的基本思想实验plot函数meshgrid函数linprog函数 引入问题 例1 运输问题 例2 生产计划问题 例3 指派问题 例4 数据拟合问题 线性规划…

C#线程基础(线程启动和停止)

目录 一、关于线程 二、示例 三、生成效果 一、关于线程 在使用多线程前要先引用命名空间System.Threading&#xff0c;引用命名空间后就可以在需要的地方方便地创建并使用线程。 创建线程对象的构造方法中使用了ThreadStart()委托&#xff0c;当线程开始执行时&#xff0c…

每日算法打卡:递归实现指数型枚举 day 1

文章目录 原题链接题目描述输入格式输出格式数据范围输入样例&#xff1a;输出样例&#xff1a; 题目分析 原题链接 92. 递归实现指数型枚举 题目难度&#xff1a;简单 题目描述 从 1 ∼ n 1 \sim n 1∼n 这 n 个整数中随机选取任意多个&#xff0c;输出所有可能的选择方案…