Java开发——42.网络编程

简介: 网络编程

学习大纲:

image.png


软件结构有两种:C/S 和 B/S;

C/S:客户端/服务器,手机上的APP;后期升级维护不方便,需要定期的升级安装...

B/S:浏览器/服务器,电脑打开的网页;维护和升级方式更简单,主需要维护升级服务器;



网络编程,就是在一定的协议下,实现两台计算机的通信的程序。

网络通信协议:

通过计算机网络,可以使多台计算机实现连接,位于同一网络中的计算机在进行连接和通信时需要遵循一定的规则,即:网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。

TCP/IP协议,是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准;它的内部包含了一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫它的下一层所提供的的协议来完成自己的需求;

image.png

4层-分层模型

TCP/IP协议中的4层分别是:应用层、传输层、网络层、链路层;

应用层:主要负责应用程序的协议,eg:HTTP协议、HTTPS协议、FTP协议...

传输层:主要使网络程序进行通信,在进行网络通信时,可采用TCP或者UDP协议

网络层:网络层是整个TCP/IP协议的核心,主要用于将传输的数据进行分组,将分组后的数据发送到目标计算机或网络中

链路层:用于定义物理传输通道,通常是对某些网络连接设备连接的驱动协议,eg:针对光纤、网线提供的驱动

传输层协议的分类:

通信的协议还是比较复杂的,java.net 包中包含的类和接口,它们提供低层次的通信细节。我们可以直接使用这些类和接口,来专注于网络程序开发,而不用考虑通信的细节。

TCP协议:传输控制协议,面向连接,transmission control protocol

在传输数据之前,会先建立发送端和接收端的逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。

TCP连接必须要明确客户端和服务端,由客户端向服务器发出连接请求,每次连接都需要经过“三次握手



什么是三次握手?在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠性;第一次握手:客户端向服务器端发出连接请求,等待服务器确认;第二次握手:服务端向客户端回送一个响应,通知客户端收到了连接请求;第三次握手:客户端再次向服务器端发送确认信息,确认连接。为什么要进行三次握手?而不是两次/四次?三次握手的目的是为了保证,双方都有收发信息的能力,两次做不到确认,四次游刃有余;

网络异常,图片无法展示
|

TCP的优点:保证传输数据的安全,可用于下载文件以及浏览网页等。


UDP协议:用户数据报协议,面向无连接,user datagram protocol

UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

UDP的特点:数据被限制在64KB以内,超出这个范围就不能发送了。

UDP的优点:

1. 消耗资源小

2.通信效率高,通常会用于音频、视频和普通数据的传输;一般视频会议都会使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响,不能保证数据的完整性


网络编程的三要素:协议+IP+端口号

协议:网络通信协议,TCP/IP...前面已经做过赘述

IP:指互联网协议地址(Internet Protocol Address),俗称IP。

IP地址用来给一个网络中的计算机设备做唯一的编号。假如我们把“个人电脑”比作“一台电话”的话,那么“IP地址”就相当于“电话号码”。
  • IP地址分类
  • 【IPv4】:是一个32位的二进制数,通常被分为4个字节,表示成a.b.c.d 的形式,例如192.168.0.100 。其中a、b、c、d都是0~255之间的十进制整数,那么最多可以表示42亿个。
  • 【IPv6】:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。
    为了扩大地址空间,拟通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制数,表示成ABCD:EF01:2345:6789:ABCD:EF01:2345:6789,号称可以为全世界的每一粒沙子编上一个网址,这样就解决了网络地址资源数量不够的问题。
  • 常用命令 (win+R输入以下命令)
  • 查看本机IP地址

ipconfig

ipconfig all

  • 检查网络是否连通

ping 空格 IP地址

  • 特殊的IP地址

本机IP地址:127.0.0.1localhost

端口号:用两个字节表示的整数,它的取值范围是0~65535

网络的通信,本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,就可以使用端口号唯一区分不同的进程;

如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。

其中,0~1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败。

例如:当你启动tomcat默认端口号为:8080,但是如果你在计算机中同时开启两个idea中的web项目,端口号相同,那么后启动的项目则会启动失败。如果遇到这种问题可以自行修改端口号。

常见的端口号:


80   : HTTP服务http:// www.baidu.com:808080 : tomcat3306 : mysql1521 : oracle443  : HTTPS服务, 安全加密的HTTP21   : FTP服务, 文件传输22   : SSH服务, 安全加密的远程登录23   : Telnet服务, 远程登录
目录
打赏
0
0
0
0
14
分享
相关文章
VB6网络通信软件上位机开发,TCP网络通信,读写数据并处理,完整源码下载
本文介绍使用VB6开发网络通信上位机客户端程序,涵盖Winsock控件的引入与使用,包括连接服务端、发送数据(如通过`Winsock1.SendData`方法)及接收数据(利用`Winsock1_DataArrival`事件)。代码实现TCP网络通信,可读写并处理16进制数据,适用于自动化和工业控制领域。提供完整源码下载,适合学习VB6网络程序开发。 下载链接:[完整源码](http://xzios.cn:86/WJGL/DownLoadDetial?Id=20)
53 12
JAVA接入DeepSeek大模型接口开发---阿里云的百炼模型
随着大模型的越来越盛行,现在很多企业开始接入大模型的接口,今天我从java开发角度来写一个demo的示例,用于接入DeepSeek大模型,国内的大模型有很多的接入渠道,今天主要介绍下阿里云的百炼模型,因为这个模型是免费的,只要注册一个账户,就会免费送百万的token进行学习,今天就从一个简单的可以执行的示例开始进行介绍,希望可以分享给各位正在学习的同学们。
172 3
JAVA接入DeepSeek大模型接口开发---阿里云的百炼模型
没有好的学历,Java开发未来的路应该怎么走?
在数字化时代,Java开发者即使没有高学历,也能通过拥抱新兴技术(如大模型应用与鸿蒙系统开发)、积累实战经验、持续学习新技能等途径实现职业突破。从参与开源项目到关注行业动态,再到规划技术专家或管理路线,建立人脉网络并利用教育平台提升能力,开发者可拓宽技术边界,适应日新月异的技术需求,在未来发展中占据一席之地。
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
81 23
一天成为Java开发高手:用飞算JavaAI实现十倍提效
“一天成为Java开发高手”曾被视为天方夜谭,但飞算JavaAI的出现改变了这一局面。这款AI开发助手通过智能引导、需求分析、自动化逻辑处理和完整代码工程生成,大幅简化了Java开发流程。它不仅帮助新手快速上手,还让资深开发者提高效率,减少调试时间。现在,参与“飞算JavaAI炫技赛”,展示你的开发实力,赢取丰厚奖品!
智慧产科一体化管理平台源码,基于Java,Vue,ElementUI技术开发,二开快捷
智慧产科一体化管理平台覆盖从备孕到产后42天的全流程管理,构建科室协同、医患沟通及智能设备互联平台。通过移动端扫码建卡、自助报道、智能采集数据等手段优化就诊流程,提升孕妇就诊体验,并实现高危孕产妇五色管理和孕妇学校三位一体化管理,全面提升妇幼健康宣教质量。
64 12
Java网络编程封装
Java网络编程封装原理旨在隐藏底层通信细节,提供简洁、安全的高层接口。通过简化开发、提高安全性和增强可维护性,封装使开发者能更高效地进行网络应用开发。常见的封装层次包括套接字层(如Socket和ServerSocket类),以及更高层次的HTTP请求封装(如RestTemplate)。示例代码展示了如何使用RestTemplate简化HTTP请求的发送与处理,确保代码清晰易维护。
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
SaaS云计算技术的智慧工地源码,基于Java+Spring Cloud框架开发
智慧工地源码基于微服务+Java+Spring Cloud +UniApp +MySql架构,利用传感器、监控摄像头、AI、大数据等技术,实现施工现场的实时监测、数据分析与智能决策。平台涵盖人员、车辆、视频监控、施工质量、设备、环境和能耗管理七大维度,提供可视化管理、智能化报警、移动智能办公及分布计算存储等功能,全面提升工地的安全性、效率和质量。
Java高级应用开发:基于AI的微服务架构优化与性能调优
在现代企业级应用开发中,微服务架构虽带来灵活性和可扩展性,但也增加了系统复杂性和性能瓶颈。本文探讨如何利用AI技术,特别是像DeepSeek这样的智能工具,优化Java微服务架构。AI通过智能分析系统运行数据,自动识别并解决性能瓶颈,优化服务拆分、通信方式及资源管理,实现高效性能调优,助力开发者设计更合理的微服务架构,迎接未来智能化开发的新时代。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等