Java基础——网络编程(一)

初识网络编程

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

应用场景:即时通信、网游对战、金融证券、国际贸易、邮件……

BS架构的优缺点:

1、不需要开发客户端,只需要页面+服务端

2、用户不需要下载,打开浏览器就能使用

3、如果应用过大,用户体验收到影响

CS架构的优缺点:

1、画面可以非常精美,用户体验好

2、需要开发客户端,也需要开发服务端

3、用户需要下载和更新的时候太麻烦

网络编程三要素

1、IP

设备在网络中的地址,是唯一的标识

常见IP分类:IPV4、IPV6

局域网IP随着上网地点不同(路由器不同)而改变,而127.0.0.1一直表示本机IP,不会改变

InetAddress类

2、端口号

应用程序在设备中唯一的标识

自己通常使用1024以上的端口号,一个端口号只能被一个应用程序使用

3、协议

数据在网络中传输的规则,常见的协议有UDP、TCP、http、https、ftp

UDP协议

1、用户数据协议

2、UDP是面向无连接的通信协议

速度快,有大小限制一次最多发送64K,数据不安全易丢失

应用:网络会议、语音通话、在线视频

TCP协议

1、传输控制协议TCP

2、TCP协议是面向连接的通信协议

速度慢,没有大小限制,数据安全

应用:文字聊天、下载软件

 UDP通信程序

发送数据

1、创建发送端的DatagramSocket对象

2、数据打包

3、发送数据

4、释放资源

//发送数据
public class SendMessageDemo {public static void main(String[] args) throws IOException {//1.创建DatagramSocket对象(快递公司)//细节://绑定端口,以后就通过这个端口往外发送//空参:所有可用的端口中随机一个进行使用//有参:指定端口号进形绑定DatagramSocket ds = new DatagramSocket();//2.打包数据String str = "你好啊";byte[] bytes = str.getBytes();InetAddress address = InetAddress.getByName("127.0.0.1");//目的地IP地址int port = 10086;//目的地端口DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);//3.发送数据ds.send(dp);//4.释放资源ds.close();}
}

接收数据

//接收对象
//运行时先运行接收端,再运行发送端
public class ReceiveMessageDemo {public static void main(String[] args) throws IOException {//1.创建DatagramSocket对象(快递公司)//细节://在接收的时候,一定要绑定端口//而且绑定的端口一定要跟发送的端口保持一致DatagramSocket ds = new DatagramSocket(10086);//2.接收数据包byte[] bytes = new byte[1024];DatagramPacket dp = new DatagramPacket(bytes, bytes.length);//receive方法是阻塞的,程序执行到这一步时,会在这里死等,等发送端发送消息ds.receive(dp);//3.解析数据包byte[] data = dp.getData();int len = dp.getLength();InetAddress address = dp.getAddress();//从哪个IP发过来的int port = dp.getPort();//从哪个端口发过来的System.out.println("接收到的数据"+ new String(data,0,len));System.out.println("该数据是从"+address+"这台电脑中的"+port+"这个端口发出的");ds.close();}
}

三种通信方式

1、单播

以前的代码就是单播(一对一)

2、组播

组播地址:224.0.0~239.255.255.255,一个地址是一组电脑

其中224.0.0.0~224.0.0.255为预留的组播地址

3、广播

广播地址:255.255.255.255,对局域网内所有电脑通信

TCP通信程序

TCP通信协议是一种可靠的网络协议,它在通信的两端(客户端和服务器)各建立一个Socket对象。通信之前要保证连接已经建立。通过Socket产生IO流来进行网络通信

客户端(发送数据)

1、创建客户端的Socket对象(Socket)与指定服务端连接

Socket (String host,int port)

host为IP,port为端口

2、获取输出流,写数据

OutputStream getOutputStream()

3、释放资源

void close()

public class Client {//TCP协议,发送数据public static void main(String[] args) throws IOException {// 1.创建Socket对象//细节:在创建对象的同时会连接服务端,如果连不上,代码会报错Socket socket = new Socket("127.0.0.1", 10000);//2.可以从连接通道中获取输出流OutputStream os = socket.getOutputStream();//3.释放资源os.close();socket.close();}
}

服务端(接收数据)

1、创建服务器端的Socket对象(ServerSocket)

ServerSocket(int port)

2、监听客户端连接,返回一个Socket对象

Socket accept()

3、获取输入流,读数据,并把数据显示在控制台

InPutStream getInputStream()

4、释放资源

void close()

public class Server {public static void main(String[] args) throws IOException {//TCP协议,发送数据//1.创建对象SeverSocketServerSocket ss = new ServerSocket(10000);//2.监听客户端的连接Socket socket = ss.accept();//3.从连接通道中获取输入流读取数据InputStream is = socket.getInputStream();int b;while ((b = is.read()) != -1) {System.out.println((char) b);}//4.释放资源】socket.close();ss.close();}
}

如果读取时中文乱码,用字符流读取即可

三次握手和四次挥手

三次握手

四次挥手

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

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

相关文章

计算机网络知识点全面总结回顾

物理层 OSI模型:数据链路层(流量控制),从传输层开始端到端;每一层的元素都称为实体,同一层的是对等实体;三个重要概念:服务(下层为上层提供调用)&#xff0c…

Python程序设计 2021秋计算和人工智能期中商科2

2021秋计算和人工智能期中商科2 第1关:矩形面积的计算 编写一个程序根据对角线长度和夹角度数计算矩形面积。 矩形面积如下所示 输入对角线长度和夹角度数,计算并显示矩形面积 要求结果显示两位小数 deval(input("对角线长度")) aeval(input(…

1.Element的table表高度自适应vue3+js写法

解决方法 在页面table上添加id,动态计算每页table的最大高度 ,将高度保存在store中,每次切换路由时进行计算。 文章目录 解决方法前言一、页面table使用二、store状态库1.引入库 效果 前言 提示:状态管理使用的是pinia,用法参考…

腾讯云EdgeOne对比普通CDN的分别

EdgeOne架构图 普通CDN架构图 ​​​​​​​ 腾讯云EdgeOne对比普通CDN的不同点 服务范围和集成度 腾讯云EdgeOne是一体化的综合平台,不仅提供内容分发功能,还包括安全防护、性能优化和边缘计算等服务。EdgeOne提供了DDoS防护、WAF(Web应…

流媒体传输协议HTTP-FLV、WebSocket-FLV、HTTP-TS 和 WebSocket-TS的详细介绍、应用场景及对比

一、前言 HTTP-FLV、WS-FLV、HTTP-TS 和 WS-TS 是针对 FLV 和 TS 格式视频流的不同传输方式。它们通过不同的协议实现视频流的传输,以满足不同的应用场景和需求。接下来我们对这些流媒体传输协议进行剖析。 二、传输协议 1、HTTP-FLV 介绍:基于 HTTP…

基于springboot的大学计算机基础网络教学系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的大学计算机基础网络教学…

sqlite3模块的使用

1. SQLite数据库 SQLite是一个轻量级的, 基于磁盘的, 关系型的数据库管理系统(RDBMS). 它不需要一个独立的服务器进程或操作系统级别的配置. SQLite是D.Richard Hipp在2000年创建的, 并且由于其小巧, 快速, 可靠和易于使用的特性, 它在全球范围内得到了广泛的应用.以下是 SQLi…

60.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露(8)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:59.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露(7) 御剑是用…

人工智能模型组合学习的理论和实验实践

组合学习,即掌握将基本概念结合起来构建更复杂概念的能力,对人类认知至关重要,特别是在人类语言理解和视觉感知方面。这一概念与在未观察到的情况下推广的能力紧密相关。尽管它在智能中扮演着核心角色,但缺乏系统化的理论及实验研…

DDPAI盯盯拍记录仪删除后的恢复方法(前后双路)

DDPAI盯盯拍行车记录仪的口碑相当不错,其产品一直以行车记录仪为主,曾经使用过比较早的产品,体验还不错。下面来看下这个DDPAI的视频恢复方法。 故障存储: 64G存储卡 /文件系统:FAT32 故障现象: 在发生事故后在记录仪上看到了…

工程设计问题---工业制冷系统的优化设计问题

参考文献: [1]李煜,梁晓,刘景森,等.基于改进平衡优化器算法求解工程优化问题[J/OL].计算机集成制造系统,1-34[2024-06-16].

水滴式粉碎机:玉米饲料加工的新篇章

在饲料加工业中,玉米作为一种重要的原料,其加工方式直接影响到饲料的品质以及动物对饲料的消化吸收率。近年来,随着科技的进步,越多的环保的饲料加工设备被引入到饲料生产中,其中,水滴式粉碎机以其独特的优…

Ubuntu Linux 24.04 C语言TCP/IP socket编程基础知识

socket起源于Unix,Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行读/写…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 部门项目任务分配(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 部门项目任务分配(100分) 🌍 评测功能需要订阅专栏后私信联…

举例说明 如何通过SparkUI和日志定位任务莫名失败?

有一个Task OOM: 通过概览信息,发现Stage 10的Task 36失败了4次导致Job失败。概览信息中显示最后一次失败的退出代码(exit code)是143,意味着发生了内存溢出(OOM,即Out of Memory)。…

探索Edge

目录 1.概述 1.1.什么是浏览器 1.2.浏览器的作用 2.Edge 2.1.什么是Edge 2.2.诞生背景 2.3.历史版本 2.4.作用 2.5.优缺点 2.5.1.优点 2.5.2.缺点 3.对比 3.1.和360浏览器的对比 3.2.和谷歌浏览器(Chrome)的对比 4.未来展望 5.总结 1.概…

从“产品的RFM分析”看如何探索“职业方向”

我们在做产品分析时,经常会用到一种方法“产品的RFM分析”,它是一种客户细分和价值评估的常用方法,广泛应用于电子商务、零售和其他众多行业,它可以帮助企业和产品团队更好地理解用户行为,优化营销策略,提升…

Python基础教程(二十二):XML解析

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

0 算法复杂度

算法复杂度 时间复杂度有关总结 一,常数时间的操作【基本操作】 常数时间——固定时间——O(1)——由实现细节决定 不会随着输入规模的变化而增加时间复杂度 1 基本操作解析 1.算数操作: ab a-b a*b a/b int a 32位 int b 32位11 178997…

Linux--MQTT(二)通信基本原理

一、MQTT 通信基本原理 MQTT 是一种基于 客户端 - 服务端 架构的消息传输协议,所以在 MQTT 协议通信中,有两个最为重要的角色,它们便是服务端 和 客户端 。 举例:若开发板向“芯片温度”这一主题发布消息,那么服务…