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.发送端和接收端的接口必须一致}
}

 

 

 

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

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

相关文章

JNPF 5.0升级钜惠,感恩回馈永远在路上

尊敬的JNPF用户们: 经过引迈团队数月的辛勤努力和不断的技术创新,JNPF快速开发平台迎来全新升级——5.0版本!此次5.0版本的迭代革新,不仅代表着我们技术实力的进一步提升,是我们对用户需求的深度理解和积极回应。为了…

重修设计模式-创建型-单例模式

重修设计模式-创建型-单例模式 一个类只允许创建一个对象(或实例),那这个类就是一个单例类,这种模式叫做单例设计模式。 单例的主要使用场景有两个,一是使用单例控制全局的资源访问,也就是用单例封装一些工…

基于C# winform部署图像动漫化AnimeGANv2部署onnx模型

【界面截图】 【效果演示】 【部分实现代码】 using System; using System.Diagnostics; using System.Windows.Forms; using OpenCvSharp;namespace FIRC {public partial class Form1 : Form{Mat src null;public Form1(){InitializeComponent();}private void button1_Cli…

html+css+js网页设计 天猫首页

htmlcssjs网页设计 天猫首页 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1,访问…

git本地仓库同步到远程仓库

整个过程分为如下几步: 1、本地仓库的创建 2、远程仓库的创建 3、远程仓库添加key 4、同步本地仓库到远程仓库 1、本地仓库的创建: 使用如下代码创建本地仓库: echo "# test" >> README.md git init git add README.md …

用户增长:策略与实践,驱动SaaS企业持续繁荣

在当今这个数字化时代,用户增长已成为所有行业,尤其是SaaS(Software as a Service,软件即服务)企业生存与发展的核心驱动力。用户增长不仅关乎市场份额的扩大,更是企业价值实现和持续盈利的基石。那么&…

【计算机网络】网络版本计算器

此前我们关于TCP协议一直写的都是直接recv或者read,有了字节流的概念后,我们知道这样直接读可能会出错,所以我们如何进行分割完整报文?这就需要报头来解决了! 但当前我们先不谈这个话题,先从头开始。 将会…

【秋招笔试】8.18大疆秋招(第一套)-后端岗

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

Springboot发邮件功能如何实现?详细步骤?

Springboot发邮件配置指南?如何集成Spring Mail发邮件? 无论是用户注册、密码重置还是重要通知的发送,邮件都是不可或缺的沟通方式。Springboot作为一个流行的Java开发框架,提供了简洁易用的方式来实现邮件功能。AokSend将详细探…

音频转换器有哪些?一键转换,轻松享受

暑假里,你是否也沉浸在激情四溢的演唱会中,用手机记录下了那些难忘的现场音频? 但回到家中,想要将这些珍贵的现场记忆从手机迁移到电脑上永久保存时,却遇到了格式不兼容的难题。 别担心,今天我们就要解决…

基于Python的机器学习系列(8):Newton Raphson逻辑回归

在本篇博文中,我们将探讨一种比传统梯度下降更高效的优化方法——Newton Raphson方法,并学习如何在逻辑回归中应用它。Newton Raphson方法通过利用二阶导数的曲率信息,快速地找到使代价函数最小化的参数。尽管这种方法在处理较小规模的数据集…

04 C++语言---数据类型

C中数据分为两种,一种是可以被修改的数据,这种数据一般被成为变量,还有一种数据是常量。 变量:变量在程序中的使用场景有很多,一般常用的数据类型都属于常量。例如 int a;等。 常量:常量是在程…

前端项目重新打包部署后如何通知用户更新

前端项目重新打包部署后如何通知用户更新 前端项目重新打包部署后如何通知用户更新常用的webSocket解决方案纯前端方案路由拦截多线程main.ts中 创建多线程多线程逻辑处理 前端项目重新打包部署后如何通知用户更新 前端项目重新打包部署后,由于用户没及时更新页面&…

关于python的Django项目性能优化

CPU—— Python编写的Django程序在服务器上消耗CPU的主要原因包括频繁的IO操作、大量的计算任务、以及第三方库的性能问题。‌ ‌频繁的IO操作‌:当Python程序频繁进行IO操作,如读写文件、网络请求等,会导致CPU占用过高。这是因为IO操作通常是…

什么是OpenTiny?

OpenTiny 是一套企业级的 Web 前端开发解决方案,提供跨端、跨框架的 UI 组件库和低代码引擎,帮助开发者高效构建 Web 应用 。企业运用开发中,可以利用 OpenTiny 的以下核心组件和优势: TinyVue 组件库:一个丰富的组件库…

python初级爬虫实战:我是怎么用python下载音乐的

今天分享的内容是如何使用python下载歌曲和歌词信息,文章涉及内容主要为了帮助大家学习python技能,请大家合规合理使用。 如果你正在学习Python爬虫,但是找不到方向的话可以试试我这一份学习方法和籽料呀!点击 领取(不…

汽车IVI中控OS Linux driver开发实操(二十四):I2C设备驱动的编写

概述: 在Linux驱动中I2C系统中主要包含以下几个成员: I2C adapter(即I2C适配器,用来控制各种I2C从设备,其驱动需要完成对适配器的完整描述,最主要的工作是需要完成i2c_algorithm结构体。这个结构体包含了此I2C控制器的数据传输具体实现,以及对外上报此设备所支持的功…

0.91寸OLED迷你音频频谱

一、简介 音频频谱在最小0.91寸OLED 屏幕上显示,小巧玲珑 二、应用场景 本模块为音频频谱显示模块,用来获取声音频谱并展示频谱,跟随音乐声音律动 三、产品概述 基于主控芯片设计的将声音采集分析频谱,显示到0.91寸OLED的功能…

我们如何将数据输入到神经网络中?

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 下面我拿识别美女的例子来给大家介绍如何将美女的图片数据输入到神经网络中。 此例中,待输入的数据是一张图像。为了存储图像…

Java中String类的经典问题、错误认知以及归纳总结

在学习过程中对String类的理解反复刷新,以此文记之,做归纳总结,也适合新手避坑。 以实用性考虑,环境为Java 8 以及 之后版本。 String类相比其它类特殊的地方在于有一个字符串常量池(StringTable),里面存着字面量的引…