当前位置: 首页 > news >正文

Java 网络编程练习

        InternetExercise1

package InternetExercise20240815;public class InternetExercise1 {public static void main(String[] args) {// 网络编程// 在网络通信协议下,不同计算机上面运行的程序,可以实现不同计算机上的数据传输// 网络编程三要素// 1.IP地址/* 想要在网络中实现计算机的互相通信,必须给每一台计算机指定一个标识号,通过标识号指定要收取数据的计算机和识别发送数据的计算机,IP则是这个标识号,就是网络空间中计算机的重要标识 */// 2.端口/* 网络的通信,本质上是两个应用程序的通信,每台计算机中都有很多的应用程序,在实现网络通信时,为了区分这些应用程序引入了端口号,端口号可以用来标识设备中的应用程序,IP地址可以唯一标识网络中的设备,端口号唯一标识设备中的应用程序 */// 3.协议/* 计算机网络可以使多台计算机实现链接,位于同一个网络中的计算机在进行连接和通信时需要遵守规则,这个规则就是网络通信协议在计算机网络中,链接和通信的规则称为网络通信协议,其对于数据传输格式、传输速率、传输步骤做了统一规定,通信双方必须同时遵守一样的协议才可以完成数据交换,常见的协议有UDP协议和TCP协议 */// IP地址/* IPV4:给每个连接在网络上的主机分配一个32bit的地址,根据TCP/IP规定:IP地址使用二进制表示,每个IP地址长32bit,为了方便使用,IP地址常被写成十进制的形式,中间使用“.”分隔,如:192.168.1.66,这种表示方法称为点分十进制表示法 *//* IPV6:IPV4的地址不够现在使用,于是引入IPV6,采用128bit的地址,16字节为1组,分为8组十六进制数,成功解决IP地址紧张问题 */// 特殊IP:127.0.0.1:回送地址,可以代表本机地址,一般是测试时使用}
}

        InternetExercise2

package InternetExercise20240815;import java.net.InetAddress;
import java.net.UnknownHostException;public class InternetExercise2 {public static void main(String[] args) throws UnknownHostException {// InetAddress// 此类表示Internet协议(IP)地址// static InetAddress getByName(String host) 确定主机名称的IP地址,主机名可以是机器名称,也可以是IP地址// String getHostName() 获取此IP地址的主机名// String getHostAddress() 返回文本显示中的IP地址字符串InetAddress ip1 =  InetAddress.getByName("WZB-OMEN");System.out.println(ip1.getHostAddress());InetAddress ip2 =  InetAddress.getByName("192.168.36.177");System.out.println(ip2.getHostName());}
}

        InternetExercise3

package InternetExercise20240815;import java.io.IOException;
import java.net.*;public class InternetExercise3 {public static void main(String[] args) throws IOException {// 端口/* 用两个字节表示的整数,取值范围是0-65535,但是,其中0-1023的端口号被一些知名的网络服务和应用占用,所以说普通的应用需要使用1024以上的端口号;如端口号被另外一个服务或应用占用,会导致当前应用程序启动失败 */// 协议:计算机网络中连接和通信的规则被称为网络通信协议// UDP协议(User Datagram Protocol) 用户数据报协议/*UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。由于以上特性,导致UDP协议消耗系统资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如:视频会议通常采用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议*/// TCP协议(Transmission Control Protocol) 传输控制协议/*TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,简单而言,先连接成功再传输它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端————由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”,完成三次握手,连接建立后,客户端和服务器才可以进行数据传输由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛。例如上传文件、下载文件、浏览网页等(保证数据的完整、安全性)*/// UDP通信程序// UDP发送数据/* Java中的UDP通信:UDP协议是一种不可靠的网络协议,其通信的两端分别建立一个Socket对象,但是这两个Socket对象只负责发送、接收数据所以基于UDP协议通信的双方而言,其并不是所谓的客户端和服务器 */// Java中提供了DatagramSocket类作为基于UDP协议的Socket// Datagram// 构造方法// DatagramSocket() 创建数据报套接字并将其绑定于本机地址上任何可用的端口  DatagramSocket(数据报套接字)// DatagramPacket(byte[] buf, int len, InetAddress add, int port) 创建数据包,发送长度为len的数据包到指定主机的端口// 相关方法:// void send(DatagramPacket p) 发送数据报包// void close() 关闭数据报套接字// void receive(DatagramPacket p) 从此套接字接收数据报包// 发送数据的步骤// 1.创建发送端的Socket对象(DatagramSocket)// 2.创建数据,并将数据打包// 3.调用DatagramSocket对象中的方法发送数据// 4.关闭发送端// 创建数据报套接字并将其绑定到本地主机上任何可用的端口DatagramSocket datagramSocket = new DatagramSocket();// 创建数据并将其打包byte[] data = "hello UDP".getBytes();DatagramPacket datagramPacket = new DatagramPacket(data, data.length, InetAddress.getByName("127.0.0.1"), 10086);// 调用send方法发送数据datagramSocket.send(datagramPacket);// 关闭发送端datagramSocket.close();// 注:// 1.必须先启动接收端的程序再启动发送端的程序// 2.发送端和接收端的接口必须一致}
}

        InternetReceiveExercise1

package InternetExercise20240815;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;public class InternetReceiveExercise1 {public static void main(String[] args) throws IOException {// UDP接收数据// 接收数据的步骤// 1.创建接收端的Socket对象(DatagramSocket)// 2.创建一个数据包,用于接收数据// 3.调用DatagramSocket对象中的方法接收数据// 4.解析数据包,并将数据在控制台显示// 构造方法// DatagramPacket(byte[] buf, int len) 创建一个DatagramPacket用于接收长度为len的数据包// 相关方法// byte[] getData() 返回数据缓冲区// int getLength() 返回要发送的数据的长度或者接收的数据的长度// 创建接收端的Socket对象(DatagramSocket)DatagramSocket datagramSocket = new DatagramSocket(10086);// 创建一个数据包,用于接收数据byte[] bytes = new byte[1024];DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);// 调用DatagramSocket对象的方法接收数据datagramSocket.receive(datagramPacket);// 解析数据包,并将数据在控制台显示System.out.println("接收到的数据是:" + new String(datagramPacket.getData(), 0, datagramPacket.getLength()));// 注:// 1.必须先启动接收端的程序再启动发送端的程序// 2.发送端和接收端的接口必须一致}
}

 

 

 

相关文章:

Java 网络编程练习

InternetExercise1 package InternetExercise20240815;public class InternetExercise1 {public static void main(String[] args) {// 网络编程// 在网络通信协议下,不同计算机上面运行的程序,可以实现不同计算机上的数据传输// 网络编程三要素// 1.IP…...

中国科技统计年鉴,数据覆盖1991-2022年多年份

基本信息. 数据名称: 中国科技统计年鉴 数据格式: excel 数据时间: 1991-2022年 数据几何类型: xlsx 数据坐标系: WGS84 数据来源:国家统计局 数据预览: 数据可视化....

大模型的训练过程

大模型的训练是一个复杂的过程,涉及多个步骤和技术。下面我将概述大模型训练的主要流程,包括预训练、微调等关键阶段,并解释一些常见的技术和策略。 1. 数据准备 数据收集:收集大量多样化的数据,包括文本、图像、音频…...

4款ai在线改写工具,帮你轻松一键智能改写文章

在当今数字化内容创作的浪潮中,ai技术的应用为我们带来了极大的便利,尤其是在文章改写方面。以下将为大家详细分享四款出色的ai在线改写工具,从而帮助大家提升创作效率和质量。 ai在线改写工具一:智媒ai伪原创工具 它是一款备受好…...

Maven Mirror - 仓库镜像的介绍和配置

Maven Mirror(Maven镜像)是Maven构建工具中用于优化依赖下载速度和提高构建效率的一种机制。 在使用 Maven 构建应用程序时,Maven 默认会从 Maven 官方的中央仓库中下载依赖包。但是,在该仓库受到网络限制或访问速度过慢等问题时&…...

DevEcoStudio对Gitee进行变基与合并

当尝试将本地分支的更改推送到远程仓库,但是远程仓库中的该分支已经有了您本地分支中没有的提交时,会出现这个提示。 具体来说,这个提示意味着: 推送被拒绝:不能直接将更改推送到远程仓库,因为远程仓库中…...

2024 NVIDIA Summer Camp Day1:构建RAG多模态AI Agent

下载材料和课件等 课程相关资料下载链接: https://pan.baidu.com/s/15Y-gmsfeYCgKF-M3TJZVgg?pwdfafe 提取码: fafe 1.课件 链接:https://pan.baidu.com/s/15JTy9CqnesXSlPiwwrUmjA?pwd1111 提取码:1111 2.phi3量化大模型 链接:http…...

微服务之间的通信?

微服务之间的通信是微服务架构中的关键部分,它决定了服务之间如何进行数据交换和协同工作。微服务架构通过将大型应用拆分成多个小型、独立的服务,每个服务专注于完成特定的业务功能,从而提高了系统的可伸缩性、可维护性和可靠性。以下是微服…...

Elasticsearch 聚合概览及示例

Elasticsearch 是一个强大的搜索引擎,除了提供搜索功能外,它还内置了丰富的聚合功能,允许用户对数据进行统计、分析和运算。聚合可以帮助我们理解数据的分布和统计特性,是数据探索和报告的重要工具。本文将介绍 Elasticsearch 中的…...

【抓包】- Fiddler抓包教程,使用Fiddle抓取B站视频;ffmpeg的使用方法

一、预准备:过滤器设置 打开fiddler后,清空内容,然后播放视频。 找到与B站视频资源相关的回应,而后在“原始(raw)”标签中查看它的host信息。 发现B站视频资源的服务器DNS地址为【*bilivideo.cn】、【*bi…...

Linux网络配置和维护命令(三)

文章目录 网络接口配置-network-scripts文件远程复制文件-scp定义主机名与IP地址的关系-hosts文件登录远程主机-sshIP/主机名配置DNS域名解析服务器-resolv.conf文件 本篇讲解:网络接口配置-network-scripts文件、远程复制文件-scp、定义主机、名与IP地址的关系-hos…...

代码随想录算法训练营第二天 |209.长度最小子数组; 59.螺旋矩阵|| ; 前缀和

今日任务 209.长度最小子数组; 59.螺旋矩阵|| 58.区间和 44.开发商购买土地 209.长度最小的子数组 题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。 拓展题目可以先不做。 题目链接&#xf…...

Go语言基础--数据类型(整型、字符型)

转义字符 常用的转义字符有如下: 1)\t : 表示一个制表符,通常使用它可以排版。 2)\n:换行符 3)\\:一个\ 4) \":一个" 5)\r:一个回车 数据类型概述 在 Go 编程语言中,数据类型用于声明函数和变量…...

SpringBoot配置--Profile

目录 使用profile 的原因? proflie 的配置方式 多profile文件方式 profile 激活方式 1 配置文件 2 命令行参数 小结 使用profile 的原因? 用来完成不同环境下,配置动态切换功能的(具体什么意思呢?假设你在A电脑…...

在Go中理解栈和先进先出原则

Go是一种功能强大的编程语言,提供了丰富的数据结构和算法。堆栈是计算机科学中的基本数据结构之一。在本博文中,我们将探讨如何在 Go 中实现和使用堆栈,以及堆栈如何遵循先进先出 (FIFO) 原则。 首先,让我们来看看堆栈是什么以及它…...

Ted靶机渗透测试

一、靶机下载地址 Ted: 1 ~ VulnHub 二、信息收集 1、主机发现 # 使用命令 nmap 192.168.145.0/24 -sn | grep -B 2 "00:0C:29:E2:36:FA" 2、端口扫描 # 使用命令 nmap 192.168.145.214 -p- -sV 3、指纹识别 # 使用命令 whatweb "http://192.168.145.214&…...

【chart.js】折线图给点添加点击事件

var mychart new Chart( ctx,{ type:line", … options:{ hover:{ // 此处最重要,决定是否能选中绑定的点 mode:“nearest” } , onClick:function(event,elements){ // 此为 被点击 的点 firstelement elements[0] // 这个点 属于第几个数据集合…...

旧手机NAS方案

这里写目录标题 1、参考2、alpine-term-v16.0-release.apk下载安装3、电脑端ssh连接3、安装docker3.1 网络配置3.2 配置APK源 1、参考 【Docker与Termux】闲置旧安卓手机上的NAS无缝部署方案 https://blog.csdn.net/AnRanGeSi/article/details/138717589 【Alpine Term】Andr…...

Secure CRT 9.x版本高亮着色配置文件

Secure CRT的网络配置文件高亮显示,还在完善,逐渐适配不同厂商 设备名字自动蓝色高亮显示设备接口名高亮显示IPv4地址、IPv6地址、MAC地址高亮显示掩码、反掩码高亮显示设备SN号高亮显示接口状态、设备状态等高亮显示各路由协议高亮显示 【下载地址】效果…...

kafka无法启动,提示连接zookeeper超时

想必不少人都遇到过这种场景,明明昨天环境还好好的,今天怎么就不行了呢?关键是这种情况,有时候连重启大法都不管用了,顿时陷入了毫无头绪的茫然中。。。 好了,聊回话题本身,因为升级程序&#x…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求&#xff…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

Python训练营-Day26-函数专题1:函数定义与参数

题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一个名为 calculate_circle_area 的函数&#xff0c;该函数接收圆的半径 radius 作为参数&#xff0c;并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求&#xff1a;函数接收一个位置参数 radi…...