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

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端口监听,要求本机没有其他服务在监听9999ServerSocket 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));}//关闭流和socketoutputStream.close();socket.close();System.out.println("客户端已完成任务");}
}

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

网络上传文件

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

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

服务端:

客户端

客户端展示图片的方法:

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

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

相关文章

龙芯久久派到手开机测试

今天刚拿到龙芯久久派,没看到文档,只有视频,我来写个博客,做个记录,免得以后忘记 1.连接usb转ttl串口与龙芯久久派,如图所示。 2.将usb转串口接到电脑USB口 也就是这个接电脑上 3.打开串口调试助手或Secu…

[数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式4599张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4599 标注数量(xml文件个数):4599 标注数量(txt文件个数):4599 标注…

Android 11.0 修改系统显示大小导航栏消失

Android 11.0 修改系统显示大小导航栏消失 1.显示大小设置为大时,导航栏图标不显示。 设置为大,较大,最大时,导航栏图标不显示。 2.开始怀疑是导航栏被隐藏了,各种折腾无效。 3.发现: frameworks/base/pa…

amis源码 更新组件数据域的几种方法

更新组件数据域的几种方法: 默认都是合并数据,非覆盖(指定replace为true的才是覆盖): const comp amisScoped.getComponentById(id);//或者getComponentByName(name) 1.comp.setData(values, replace); //更新多个值values, r…

Linux多进程和多线程(一)

进程 进程的概念 进程(Process)是操作系统对一个正在运行的程序的一种抽象。它是系统运行程序的最小单位,是资源分配和调度的基本单位。 进程的特点如下 进程是⼀个独⽴的可调度的活动, 由操作系统进⾏统⼀调度, 相应的任务会被调度到cpu …

Python逻辑控制语句 之 判断语句--if else结构

1.if else 的介绍 if else :如果 ... 否则 .... 2.if else 的语法 if 判断条件: 判断条件成立,执行的代码 else: 判断条件不成立,执行的代码 (1)else 是关键字, 后⾯需要 冒号 (2)存在冒号…

【BILIBILIAS】安卓端B站视频下载神器,4K画质轻松get!

B站视频下载的方法之前给大家分享过网页版和电脑版的工具《太猛了!B站视频下载方法!三端通用!》,但是手机上的工具没有给大家分享过。今天今天就给大家分享一个安卓端的B站视频下载神器——BILIBILIAS,可以轻松下载4K画…

【UE 网络】专用服务器和多个客户端加入游戏会话的过程,以及GameMode、PlayerController、Pawn的创建流程

目录 0 引言1 多人游戏会话1.1 Why?为什么要有这个1.2 How?怎么使用? 2 加入游戏会话的流程总结 🙋‍♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏💥 标题:【UE 网络】在网络…

Linux部署Java项目至云服务器

文章目录 1.服务器环境2.发布部署过程2.1 执行SQL脚本2.2 修改代码中数据源的配置2.3 修改配置中的日志级别与日志文件路径2.4 打包Java程序2.5 上传到服务器2.6 后台运行2.7 服务器开放对应的端口2.8 访问验证 1.服务器环境 要将我们的项目部署到云服务器上我们就需要先有一个…

2024年值得信赖的在线代理IP服务商

在当今的网络世界中,代理IP服务成为了许多企业和个人在进行网络数据处理、多账号管理等任务时不可或缺的工具。然而,面对市场上众多的代理IP服务商,如何挑选出真正值得信赖的服务商成为了一大难题。作为专业的测评团队,我们近期对…

基于MIMO系统的预编码matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 最小均方误差(MMSE)准则 4.2 量化准则 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 …

HarmonyOS APP应用开发项目- MCA助手(持续更新中~)

简言: gitee地址:https://gitee.com/whltaoin_admin/money-controller-app.git端云一体化开发在线文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/agc-harmonyos-clouddev-view-0000001700053733-V5 注&#xff1…

【PyQt】20-QTimer(动态显示时间、定时关闭)

QTimer 前言一、QTimer介绍二、动态时间展示2.1 代码2.2 运行结果 三、定时关闭3.1 介绍他的两种用法1、使用函数或Lambda表达式2、带有定时器类型(高级) 3.2 代码3.3 运行结果 总结 前言 好久没学习了。 一、QTimer介绍 pyqt里面的多线程可以有两种实…

微信内置H5支付

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 场景是用户通过微信扫app内的收款码,跳到一个h5页面。然后完成支付。 代码实现的整体流程: 使用微信扫码,码是app内生成的,码…

Day38:LeedCode 1049. 最后一块石头的重量 II 494. 目标和 474.一和零

1049. 最后一块石头的重量 II 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果…

Java的NIO体系

目录 NIO1、操作系统级别下的IO模型有哪些&#xff1f;2、Java语言下的IO模型有哪些&#xff1f;3、Java的NIO应用场景&#xff1f;相比于IO的优势在哪&#xff1f;4、Java的IO、NIO、AIO 操作文件读写5、NIO的核心类 :Buffer&#xff08;缓冲区&#xff09;、Channel&#xff…

【proteus 51单片机入门】8*8led点阵

文章目录 前言如何点亮led点阵仿真图代码点亮led核心代码解析 爱心代码 滚动总结 前言 在嵌入式系统的开发中&#xff0c;LED点阵显示器是一种常见的显示设备&#xff0c;它可以用来显示各种图形和文字&#xff0c;为用户提供直观的信息反馈。本文将介绍如何使用Proteus软件和…

使用 MongoDB 剖析开放银行:技术挑战和解决方案

开放银行&#xff08;或开放金融&#xff09;在银行业掀起了一股颠覆性浪潮&#xff0c;它迫使金融机构&#xff08;银行、保险公司、金融科技公司、企业甚至政府机构&#xff09;迎接一个透明、协作和创新的新时代。这种模式转变要求银行与第三方提供商&#xff08;TPP&#x…

如何在 SQL 中删除一条记录?

如何在 SQL 中删除一条记录&#xff1f; 在 SQL 中&#xff0c;您可以使用DELETE查询和WHERE子句删除表中的一条记录。在本文中&#xff0c;我将向您介绍如何使用DELETE查询和WHERE子句删除记录。我还将向您展示如何一次从表中删除多条记录 如何在 SQL 中使用 DELETE 这是使…

【计算机图形学】期末考试知识点汇总(上)

文章目录 视频教程第一章 计算机图形学概述计算机图形学的定义计算机图形学的应用计算机图形学 vs 图像处理 vs模式识别图形显示器的发展及工作原理理解三维渲染管线 第二章 基本图元的扫描转换扫描转换直线的扫描转换DDA算法Bresenham算法中点画线算法圆的扫描转换中点画圆算法…