Java进阶七-网络编程,反射

一 网络编程

网络编程:在网络通信的协议下,不同计算机上运行的程序,进行的数据传输。

一 基础知识

1 常见的软件架构

CS:通过客户端访问服务器。

  • 1:画面可以做的非常好,用户体验好。
  • 2:需要开发客户端,也需要开发服务端。
  • 3:用户需要下载和更新的时候太麻烦。

BS:通过浏览器访问服务器。

  • 1:不需要开发客户端,只需要页面+服务端。
  • 2:用户不需要下载,打开浏览器就能使用。
  • 3:如果应用过大,用户体验就会收到影响。

2 网络编程三要素:

  • 1 确定设备在互联网上的地址(IP)
  • 2 确定接受数据的软件(端口号)
  • 3 网络传输的规则(网络传输协议)

二 IP

全称:Internet Protocol,互联网协议地址,也称IP地址,是分配给上网设备的数字标签。

1 IPv4:互联网通信协议的第四版

  • 采用32位地址长度,分成四组。
  • 点分十进制 - 不到四十三亿(不够)

2 IPv6:互联网通信协议的第六版

  • 采用128位地址长度,分成八组
  • 冒分十六进制表示

3 IPv4的地址分类:

1 公网地址和私有地址

192.168.开头就是私有地址,范围即为192.168.0.0--192.168.255.255,专门为组织机构内部使用,以此节省IP。

2 特殊IP地址

127.0.0.1,也可以是localhost:是回送地址,也称本地回环地址,也称本机IP,永远只会寻找当前所在本机设备。

3 InetAddress类获取IP地址

代码实现

import java.net.InetAddress;
import java.net.UnknownHostException;public class shu19_1 {public static void main(String[] args) throws UnknownHostException {//IP对象//InetAddress byName = InetAddress.getByName("192.168.1.102");InetAddress byName = InetAddress.getByName("LAPTOP-RGQCLF4P");System.out.println(byName);//主机名String hostName = byName.getHostName();System.out.println(hostName);//主机ip地址String host = byName.getHostAddress();System.out.println(host);}
}

三 端口号

端口号:应用在设备中唯一的标识。

端口号有两个字节表示的整数,取值范围(0~65535)

一个端口只能被一个应用程序使用

四 协议

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

1 UDP协议

用户数据报协议(User Datagram Protocol)

  • UDP是面向无连接通信协议。
  • 特点:速度快,有大小限制一次最多发送64K,数据不安全,容易丢失数据。

2 TCP协议

传输控制协议TCP(Transmission Control Protocol)

  • TCP协议是面向连接的通信协议。
  • 特点:速度慢,没有大小限制,数据安全。

五 具体实现

UDP通信程序(发送数据)

  • 1:创建发送端的DatagramSocket对象
  • 2:数据打包(DatagramPacket)
  • 3: 发送数据
  • 4:释放资源

空参构造:表示发出的端口不指定,下面的port是指定的端口。

import java.io.IOException;
import java.net.*;public class shu19_2 {public static void main(String[] args) throws IOException {DatagramSocket ds = new DatagramSocket();//发送的数据String str = "你好啊,很高兴见到你!";byte[] bytes = str.getBytes();//获取发送数据(字节数组)InetAddress address = InetAddress.getByName("127.0.0.1");//获取IP对象int port = 8080;//端口DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);//发送数据ds.send(dp);//释放资源ds.close();}
}

UDP通信程序(接收数据)

  • 1:创建接收端的DatagramSocket对象
  • 2:接收打包好的数据
  • 3:解析数据包
  • 4:释放资源
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;public class shu19_3 {public static void main(String[] args) throws IOException {//创建对象DatagramSocket ds = new DatagramSocket(8080);//接收数据byte[] buf = new byte[1024];DatagramPacket dp = new DatagramPacket(buf, buf.length);ds.receive(dp);byte[] data = dp.getData();int length = dp.getLength();InetAddress address = dp.getAddress();int port = dp.getPort();//打印接受数据System.out.println("接收数据"+new String(data,0,length));System.out.println("数据是从"+address+"这台设备中的"+port+"这个端口发送的");//释放资源ds.close();}
}

运行结果

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

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

相关文章

【C++进阶篇】像传承家族宝藏一样理解C++继承

文章目录 须知 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&#xff1…

Swin-T图像论文复现

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

扫雷-完整源码(C语言实现)

云边有个稻草人-CSDN博客 在学完C语言函数之后,我们就有能力去实现简易版扫雷游戏了(成就感满满),下面是扫雷游戏的源码,快试一试效果如何吧! 在test.c里面进行扫雷游戏的测试,game.h和game.c…

Spring Web MVC(详解中)

文章目录 Spring MVC(中)RESTFul风格设计RESTFul风格概述RESTFul风格特点RESTFul风格设计规范RESTFul风格好处RESTFul风格实战需求分析RESTFul风格接口设计后台接口实现 基于RESTFul风格练习(前后端分离模式)案例功能和接口分析功…

输入json 达到预览效果

下载 npm i vue-json-pretty2.4.0 <template><div class"newBranchesDialog"><t-base-dialogv-if"addDialogShow"title"Json数据配置"closeDialog"closeDialog":dialogVisible"addDialogShow":center"…

STL算法之基本算法<stl_algobase.h>

STL标准规格中没哟区分基本算法或复杂算法&#xff0c;然后SGI却把常用的一些算法定义于<stl_algobase.h>之中&#xff0c;其他算法定义于<stl_algo.h>之中。以下一一列举这些基本算法。 目录 运用实例 equal,fill,fill_n,iter_swap, lexicographical_compare,m…

dns 服务器简单介绍

dns 服务器分类&#xff1a; 根域名服务器顶级域名服务器权威域名服务器本地域名服务器 dns 的查询过程 国内优秀公共域名 腾讯&#xff1a;DNSPod-免费智能DNS解析服务商-电信_网通_教育网,智能DNS-烟台帝思普网络科技有限公司 119.29.29.29 和 182.254.118.118 阿里&#xf…

AI智算-正式上架GPU资源监控概览 Grafana Dashboard

下载链接 https://grafana.com/grafana/dashboards/22424-ai-gpu-20241127/

CAN详解

CAN简介 • CAN 总线&#xff08; Controller Area Network Bus &#xff09;控制器局域网总线 • CAN 总线是由 BOSCH 公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线&#xff0c;广泛应用于汽车、嵌入式、工业控制等领域 • CAN 总线特征&#xff1a; …

透视投影(Perspective projection)与等距圆柱投影(Equirectangular projection)

一、透视投影 1.方法概述 Perspective projection&#xff08;透视投影&#xff09;是一种模拟人眼观察三维空间物体时的视觉效果的投影方法。它通过模拟观察者从一个特定视点观察三维场景的方式来创建二维图像。在透视投影中&#xff0c;远处的物体看起来比近处的物体小&…

(四)Spring Boot学习——整合修改使用druid连接池

我的是使用springboot3的&#xff0c;对应的有整合的druid-spring-boot-3-starter的jar实现对springboot3的兼容。 <!--******************数据库相关配置************************--> <!-- 1.配置数据库相关的jar包,连接池使用druids上&#xff0c;并引入整合spring…

think php处理 异步 url 请求 记录

1、需求 某网站 需要 AI生成音乐&#xff0c;生成mp3文件的时候需要等待&#xff0c;需要程序中实时监听mp3文件是否生成 2、用的开发框架 为php 3、文件结构 配置路由设置 Route::group(/music, function () {Route::post(/musicLyrics, AiMusic/musicLyrics);//Ai生成歌词流式…

Linux八股积累与笔记

1、iptables 是一个用于配置Linux内核防火墙规则的工具。四表五链&#xff1a;在iptables中&#xff0c;有四个表&#xff08;tables&#xff09;和五个链&#xff08;chains&#xff09;&#xff0c;用于管理不同类型的数据包过滤规则。如下&#xff1a; 表&#xff08;Tabl…

乐鑫发布 esp-iot-solution v2.0 版本

今天&#xff0c;乐鑫很高兴地宣布&#xff0c;esp-iot-solution v2.0 版本已经发布&#xff0c;release/v2.0 分支下的正式版本组件将为用户提供为期两年的 Bugfix 维护&#xff08;直到 2027.01.25 ESP-IDF v5.3 EOL&#xff09;。该版本将物联网开发中常用的功能进行了分类整…

【爬虫框架:feapder,管理系统 feaplat】

github&#xff1a;https://github.com/Boris-code/feapder 爬虫管理系统 feaplat&#xff1a;http://feapder.com/#/feapder_platform/feaplat 爬虫在线工具库 &#xff1a;http://www.spidertools.cn &#xff1a;https://www.kgtools.cn/1、feapder 简介 对于学习 Python…

uni-app 蓝牙开发

一. 前言 Uni-App 是一个使用 Vue.js 开发&#xff08;所有&#xff09;前端应用的框架&#xff0c;能够编译到 iOS、Android、快应用以及各种小程序等多个平台。因此&#xff0c;如果你需要快速开发一款跨平台的应用&#xff0c;比如在 H5、小程序、iOS、Android 等多个平台上…

C语言——海龟作图(对之前所有内容复习)

一.问题描述 海龟作图 设想有一只机械海龟&#xff0c;他在C程序控制下在屋里四处爬行。海龟拿了一只笔&#xff0c;这支笔或者朝上&#xff0c;或者朝下。当笔朝下时&#xff0c;海龟用笔画下自己的移动轨迹&#xff1b;当笔朝上时&#xff0c;海龟在移动过程中什么也不画。 …

【Maven】继承和聚合

5. Maven的继承和聚合 5.1 什么是继承 Maven 的依赖传递机制可以一定程度上简化 POM 的配置&#xff0c;但这仅限于存在依赖关系的项目或模块中。当一个项目的多个模块都依赖于相同 jar 包的相同版本&#xff0c;且这些模块之间不存在依赖关系&#xff0c;这就导致同一个依赖…

Android 性能优化:内存优化(理论篇)

内存作为App程序运行最重要的资源之一&#xff0c;需要运行过程中做到合理的资源分配与回收&#xff0c;不合理的内存占用轻则使得用户应用程序运行卡顿、ANR、黑屏&#xff0c;重则导致用户应用程序发生 OOM&#xff08;out of memory&#xff09;崩溃。喜马直播随着近些年的业…

技能之发布自己的依赖到npm上

目录 开始 解决 步骤一&#xff1a; 步骤二&#xff1a; 步骤三&#xff1a; 运用 一直以为自己的项目在github上有了&#xff08;之传了github&#xff09;就可以进行npm install下载&#xff0c;有没有和我一样萌萌的同学。没事&#xff0c;萌萌乎乎的不犯罪。 偶然的机…