韩顺平0基础学Java——第33天

news2024/12/23 10:57:24

p653-674

坦克大战

继续上回游戏

将每个敌人的信息,恢复成Node对象,放进Vector里面。

播放音乐

使用一个播放音乐的类。

第二阶段结束了


网络编程

相关概念

(权当是复习计网了)

 网络
1.概念:两台或多台设备通过一定物理设备连接起来构成了网络
2.根据网络的覆盖范围不同,对网络进行分类:
        局域网:覆盖范围最小,仅仅覆盖一个教室或一个机房
        城域网:覆盖范围较大,可以覆盖一个城市
        广域网:覆盖范围最大,可以覆盖全国,甚至全球,万维网是广域网的代表

.·ip地址
1.概念:用于唯一标识网络中的每台计算机/主机2.查看ip地址: ipconfig
3. ip地址的表示形式:点分十进制Xx.XX.XX.XX4.每一个十进制数的范围:0~255
5. ip地址的组成=网络地址+主机地址,比如:192.168.16.69
6. iPv6是互联网工程任务组设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。
7.由于IPv4最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联的障碍


·域名
1.www.baidu.com
2.好处:为了方便记忆,解决记ip的困难3.概念:将ip地址映射成名
·端口号
·1.概念:用于标识计算机上某个特定的网络程序

2表示形式:以整数形式,范围0~65535
3.0~1024已经被占用,比如 ssh 22, ftp 21, smtp 25 ,http 804.

在网络开发中,不要使用0-1024,因为它们往往被知名程序占用了!

常见的网络程序端口号:


tomcat :8080

mysql:3306

oracle:1521

sqlserver:1433
 

 网络通信协议协议(tcp/ip)
TCP/IP (Transmission Control
Protocol/lnternet Protocol)的简写,

●中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。

·TCP和UDP

TCP协议:
1.使用TCP协议前,须先建立TCP连接,形成传输数据通道

2传输前,采用"三次握手"方式,是可靠

        在吗?

        在

        我要说事了...

3.TCP协议进行通信的两个应用进程:客户端、服务端

4.在连接中可进行大数据量的传输
5.传输完毕,需释放已建立的连接,效率低

UDP协议:
1.将数据、源、目的封装成数据包,不需要建立连接

2.每个数据报的大小限制在64K内,不适合传输大量数据
3.因无需连接,故是不可靠的
4、发送数据结束时无需释放资源(因为不是面向连接的),速度快

5.举例:厕所通知:发短信

InetAddress类

相关方法
1.获取本机InetAddress对象getLocalHost

2.根据指定主机名/域名获取ip地址对象getByName

3.获取InetAddress对象的主机名getHostName

4.获取InetAddress对象的地址getHostAddress
 

 

//获取本机对象
InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost);

//根据指定主机名,获取InetAddress对象
InetAddress host1 = InetAddress.getByName("DESKTOP-2OATAMU");//我想加入老韩的电脑名该怎么操作呢?
System.out.println(host1);

//根据域名返回InetAddress对象
InetAddress host2 = InetAddress.getByName("www.baidu.com");
System.out.println(host2);

//通过InetAddress对象,获取对应的地址
String hostAdd = host2.getHostAddress();
System.out.println(hostAdd);

//通过InetAddress对象,获取对应的主机名或域名
String hostName = host2.getCanonicalHostName();
System.out.println(hostName);

Socket(插座?)

1.套接字(Socket)开发网络应用程序被广泛采用,以至于成为事实上的标准。

2.通信的两端都要有Socket,是两台机器间通信的端点

3.网络通信其实就是Socket间的通信。

4.Socket允许程序把网络连接当成一个流,数据在两个Socket间通过IO传输

5.一般主动发起通信的应用程序属客户端,等待通信请求的为服务端

Socket用到TCP和UDP都可以。

TCP网络通信编程

●基本介绍
1.基于客户端―服务端的网络通信

2.底层使用的是TCP/IP协议

3.应用场景举例:客户端发送数据,服务端接受并显示控制台

4.基于Socket的TCP编程

例:

服务端:

package com.day33;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author 马大可
 * @version 1.0
 * 服务端!
 */
public class Sock {
    public static void main(String[] args) throws IOException {
        //表示在本机的999端口监听,要求本机没有其他服务在监听9999
        ServerSocket serverSocket = new ServerSocket(9999);
        System.out.println("服务端在9999端口监听,等待连接");

        //当没有客户端连接9999端口时,则阻塞,等待连接。
        //如果有客户端连接,则会返回Socket对象,程序继续。
        Socket socket = serverSocket.accept();

        System.out.println("服务端 socket="+socket.getClass());

        InputStream inputStream = socket.getInputStream();

        byte[] buf = new byte[1024];
        int readlen = 0;
        while ((readlen=inputStream.read(buf))!=-1){
            System.out.println(new String(buf,0,readlen));
        }


        //让服务端回信
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("hello,我是服务端".getBytes());

        //输出write结束的标记:我说完了,你可以说了
        socket.shutdownOutput();

        inputStream.close();
        outputStream.close();
        socket.close();
        System.out.println("服务端任务完成!");


    }
}

客户端:

package com.day33;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * @author 马大可
 * @version 1.0
 * 客户端
 */
public class Sock_c {
    public static void main(String[] args) throws IOException {
        //连接服务端(也就是本机)9999的端口
        Socket socket = new Socket(InetAddress.getLocalHost(),9999);

        //如果连接成功,返回Socket对象
        System.out.println("客户端 socket= "+socket.getClass());

        //得到和socket对象关联的输出流对象
        OutputStream outputStream = socket.getOutputStream();

        outputStream.write("hello!我是客户".getBytes());
        //输出write结束的标记(我说完了,你可以说了
        socket.shutdownOutput();

        InputStream inputStream = socket.getInputStream();

        byte[] buf = new byte[1024];
        int readlen = 0;
        while ((readlen=inputStream.read(buf))!=-1){
            System.out.println(new String(buf,0,readlen));
        }


        //关闭流和socket
        outputStream.close();
        socket.close();

        System.out.println("客户端已完成任务");
    }
}

这是字节流的方式,还可以换成字符流来发送纯文本

网络上传文件

也就是说,把客户端的图片通过网络上传到服务器,服务器回复消息。

自己配合gpt成功了(哈哈,AI早日战胜我)

服务端:

客户端

客户端展示图片的方法:

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

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

相关文章

Java基础知识-集合类

1、HashMap 和 Hashtable 的区别? HashMap 和 Hashtable是Map接口的实现类,它们大体有一下几个区别: 1. 继承的父类不同。HashMap是继承自AbstractMap类,而HashTable是继承自Dictionary类。 2. 线程安全性不同。Hashtable 中的方…

【Nginx】源码安装

nginx官网:nginx: download 选择文档版本安装即可 1.安装依赖包 //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 2.下载并解压安装包 //创建一个文件夹 cd /usr/local mkdir nginx cd nginx //将下载的nginx压缩…

蓝卓出席“2024C?O大会”,探讨智能工厂建设新路径

6月29日,“2024C?O大会”在金华成功举办。此次大会由浙江省企业信息化促进会主办,与以往CIO峰会不同,“C?O”代表了企业数字化中的核心决策者群体,包括传统的CIO、CEO、CDO等。 本次大会围绕C?O、AIGC与制造业、数据价值、未来…

MySQL之可扩展性(九)

可扩展性 直接连接 2.修改应用的配置 还有一个分发负载的办法是重新配置应用。例如,你可以配置多个机器来分担生成大报表操作的负载。每台机器可以配置成连接到不同的MySQL备库,并为第N个用户或网站生成报表。 这样的系统很容易实现,但如果…

第7章_低成本 Modbus 传感器的实现

文章目录 第7章 低成本 Modbus 传感器的实现7.1 硬件资源介绍与接线7.2 开发环境搭建7.3 创建与体验第 1 个工程7.3.1 创建工程7.3.2 配置调试器7.3.3 配置 GPIO 操作 LED 7.4 UART 编程7.4.1 使用 STM32CubeMX 进行配置1.UART12.配置 RS485方向引脚 7.4.2 封装 UART7.4.3 上机…

memory动态内存管理学习之weak_ptr

此头文件是动态内存管理库的一部分。std::weak_ptr 是一种智能指针,它持有对被 std::shared_ptr 管理的对象的非拥有性(“弱”)引用。在访问所引用的对象前必须先转换为 std::shared_ptr。std::weak_ptr 用来表达临时所有权的概念&#xff1a…

快速应用开发(RAD):加速软件开发的关键方法

目录 前言1. 快速应用开发的概念1.1 什么是快速应用开发?1.2 RAD与传统开发方法的对比 2. 快速应用开发的实施步骤2.1 需求分析与规划2.2 快速原型开发2.3 用户评估与反馈2.4 迭代开发与改进2.5 最终交付与维护 3. 快速应用开发的优点与应用场景3.1 优点3.2 应用场景…

24级中国科学技术大学843信号与系统考研分数线,中科大843初复试科目,参考书,大纲,真题,苏医工生医电子信息与通信工程。

(上岸难度:★★★★☆,考试大纲、真题、经验帖等考研资讯和资源加群960507167/博睿泽电子信息通信考研咨询:34342183) 一、专业目录及考情分析 说明: ①复试成绩:满分100分。上机满分50分,面试满分150分,复试成绩(上机…

Llama 3 模型微调的步骤

环境准备 操作系统:Ubuntu 22.04.5 LTS Anaconda3:Miniconda3-latest-Linux-x86_64 GPU: NVIDIA GeForce RTX 4090 24GStep 1. 准备conda环境 创建一个新的conda环境: conda create --name llama_factory python3.11激活刚刚创…

线性代数--行列式1

本篇来自对线性代数第一篇的行列式的一个总结。 主要是行列式中有些关键点和注意事项,便于之后的考研复习使用。 首先,对于普通的二阶和三阶行列式,我们可以直接对其进行拆开,展开。 而对于n阶行列式 其行列式的值等于它的任意…

系统运维面试题总结(网络基础类)

系统运维面试题总结(网络基础类) 网络基础类第七层:应用层第六层:表示层第五层:会话层第四层:传输层第三层:网络层第二层:数据链路层第一层:物理层 类似面试题1、TCP/IP四…

Django 配置静态文件

1,DebugTrue 调试模式 Test/Test/settings.py DEBUG True...STATICFILES_DIRS [os.path.join(BASE_DIR, static),] STATIC_URL /static/ 1.1 创建静态文件 Test/static/6/images/Sni1.png 1.2 添加视图函数 Test/app6/views.py from django.shortcuts impor…

使用Java实现通用树形结构转换工具类:深入解析TreeUtil和TreeNode接口

文章目录 一、TreeNode接口设计二、TreeUtil工具类设计三、示例:实现TreeNode接口的节点类四、示例:使用TreeUtil构建树形结构五、总结 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1…

落石滑坡监测报警系统:创新保障高速公路安全

​ ​​在现代交通建设中,高速公路的安全性和稳定性至关重要。特别是易发生落石区域,如何有效预防和应对落石滑坡带来的事故成为了一项关键性挑战。为此,落石滑坡监测报警系统应运而生,它通过先进的技术手段,为高速…

汇聚荣拼多多运营好吗?

在当前电商行业竞争激烈的背景下,拼多多凭借其独特的商业模式和市场定位迅速崛起,成为众多商家和品牌争相入驻的平台。对于“汇聚荣拼多多运营好吗?”这一问题,答案是肯定的。拼多多不仅提供了一个广阔的市场空间,还通过其创新的…

C++输出彩色方块

1.使用方法 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0xab); ———————————————————————————————————————— 0 黑色 1 蓝色 2 绿色 3 湖蓝色 4 红色 5 紫色 6 黄色 7 白色 8 灰色 9 …

linux下安装kkFileView4

kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等 安装kkFileView前需要安装LibreOffic…

HarmonyOS开发:应用完整性校验

简介 为了确保应用的完整性和来源可靠,OpenHarmony需要对应用进行签名和验签。 应用开发阶段: 开发者完成开发并生成安装包后,需要开发者对安装包进行签名,以证明安装包发布到设备的过程中没有被篡改。OpenHarmony的应用完整性校…

推理之巅 超云为先|2024中国智算中心全栈技术大会,超云引领AI算力新趋势

在AI技术日新月异的浪潮中,算力作为推动数字经济发展的关键力量,正迎来全新的发展机遇。 6月25日至27日,以“AI赋能,重构未来”为主题的2024中国智算中心全栈技术大会、第5届中国数据中心绿色能源大会暨第10届中国(上…