当前位置: 首页 > 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.发送端和接收端的接口必须一致}
}

 

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 新天龙八部3江山策仿官方+单机联网+GM工具
  • 【抓包】- Fiddler抓包教程,使用Fiddle抓取B站视频;ffmpeg的使用方法
  • Eureka入门指南:微服务注册与发现的基础概念
  • 软件开发感悟
  • go注册到eureka微服务
  • 构建AI知识库:4大优势+无限可能,共绘在线教育蓝图!
  • 【代码随想录算法训练营第42期 第七天 | LeetCode454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和】
  • 【Python快速入门和实践012】Python常用脚本-目标检测之查看数据集标签类别及对应数量
  • Python爬虫使用实例
  • 人脸操作:从检测到识别的全景指南
  • 精彩回顾 | 风丘科技亮相2024名古屋汽车工程博览会
  • 【C++】STL——list
  • ubuntu使用gParted给sda1分区扩展分区
  • 无字母数字webshell之命令执行
  • 时间序列预测 | CEEMDAN+CNN+Transformer多变量时间序列预测(Python)
  • 03Go 类型总结
  • 2017前端实习生面试总结
  • C学习-枚举(九)
  • HTML-表单
  • Java超时控制的实现
  • java中的hashCode
  • JS学习笔记——闭包
  • Otto开发初探——微服务依赖管理新利器
  • PHP那些事儿
  • Selenium实战教程系列(二)---元素定位
  • spring学习第二天
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 安装python包到指定虚拟环境
  • 电商搜索引擎的架构设计和性能优化
  • 关于 Cirru Editor 存储格式
  • 跨域
  • 物联网链路协议
  • 怎么把视频里的音乐提取出来
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​configparser --- 配置文件解析器​
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #1014 : Trie树
  • #NOIP 2014#Day.2 T3 解方程
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (16)Reactor的测试——响应式Spring的道法术器
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (C语言)字符分类函数
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十六)串口UART
  • (数据结构)顺序表的定义
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (学习日记)2024.01.19