强哥说Java--网络编程(一)

简介: 强哥说Java--网络编程(一)

网络编程概述



Java提供的网络类库,可以实现无痛的网络连接,联网的底层 细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并 且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一 的网络编程环境


网络通信要素概述

通信双方地址

➢IP

➢端口号

一定的规则(即:网络通信协议。有两套参考模型)

➢OSI参考模型:模型过于理想化,未能在因特网上进行广泛推广

➢TCP/IP参考模型(或TCP/IP协议):事实上的国际标准。


image.png


image.png


通信要素1 : IP和端口号



ip地址

IP地址: InetAddress

➢唯一的标识Internet.上的计算机(通信实体)

➢本地回环地址(hostAddress): 127.0.0.1 主机名(hostName): localhost

➢IP地址分类方式1: IPV4和IPV6

IPV4: 4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已经用尽。以点分十进制表示,如192. 168.0.1

IPV6: 128位 (16个字节),写成8个无符号整数,每个整数用四个十六进制位表示,数之间用冒号(: )分开,如: 3ffe:3201:1401:1280:c8ff:fe4d:db39:1984


➢IP地址分类方式2:公网地址(万维网使用)和私有地址(局域网使用)。192.168.开头的就是私有址址,范围即为192.168.0.0–192.168.255.255,专门为组织机

构内部使用

➢特点:不易记忆


端口号

端口号标识正在计算机_上运行的进程(程序)

➢不同的进程有不同的端口号

➢被规定为一个16位的整数0~65535。

➢端口分类:

➢公认端口: 0~1023。 被预先定义的服务通信占用(如: HTTP占用端口80,FTP占用端口21,Telnet占 用端口23)

➢注册端口: 1024~49151。 分配给用户进程或应用程序。( 如: Tomcat 占用端口8080,MySQL占用端口3306,Oracle占用端口1521等) 。

➢动态/私有端口: 49152~65535。


端口号与IP地址的组合得出一个网络套接字: Socket.


InetAddress类

Internet上的主机有两种方式表示地址:

➢域名(hostName): www. atguigu.com

➢IP地址(hostAddress): 202.108.35.210

InetAddress类主要表示IP地址,两个子类:Inet4Address、 Inet6Address。


InetAddress类对象含有一个Internet主机地址的域名和IP地址:www.atguigu.com和202.108.35.210。


域名容易记忆,当在连接网络时输入一个主机的域名后,域名服务器(DNS)负责将域名转化成IP地址,这样才能和主机建立连接。-------域名解析


InetAddress类没有提供公共的构造器,而是提供了如下几个静态方法来获取InetAddress实例


public static InetAddress getLocalHost()


public static InetAddress getByName(String host)


InetAddress提供了如下几个常用的方法


public String getHostAddress():返回 IP 地址字符串(以文本表现形式)


public String getHostName():获取此 IP 地址的主机名


public boolean isReachable(int timeout):测试是否可以达到该地址


实例


 
         


通信要素2 :网络协议



●网络通信协议


计算机网络中实现通信必须有一些约定,即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。


●问题:网络协议太复杂

计算机网络通信涉及内容很多,比如指定源地址和目标地址,加密解密,压缩解压缩,差错控制,流量控制,路由控制,如何实现如此复杂的网络协议呢?


●通信协议分层的思想

在制定协议时,把复杂成份分解成一些简单的成份,再将它们复合起来。最常

用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一层,而与

**再下一层不发生关系。**各层互不影响,利于系统的开发和扩展。


TCP/IP协议簇

传输层协议中有两个非常重要的协议:


传输控制协议TCP(Transmission Control Protocol)


用户数据报协议UDP(User Datagram Protocol)。


**TCP/IP 以其两个主要协议:传输控制协议(TCP)和网络互联协议(IP)**而得名,实际上是一组协议,包括多个具有不同功能且互为关联的协议。


IP(Internet Protocol)协议是网络层的主要协议,支持网间互连的数据通信。


TCP/IP协议模型从更实用的角度出发,形成了高效的四层体系结构,即物理链路层、IP层、传输层和应用层。


TCP网络编程



TCP协议:


➢使用TCP协议前,须先建立TCP连接,形成传输数据通道

➢传输前,采用“三次握手”方式,点对点通信,是可靠的

➢TCP协议进行通信的两个应用进程:客户端、服务端。

➢在连接中可进行大数据量的传输

➢传输完毕,需释放已建立的连接,效率低


UDP协议:

➢将数据、源、目的封装成数据包,不需要建立连接

➢每个数据报的大小限制在64K内

➢发送不管对方是否准备好,接收方收到也不确认,故是不可靠的

➢可以广播发送

➢发送数据结束时无需释放资源,开销小,速度快


这里简单介绍下,后序会详细更新,这点很重要


image.png


image.png


Socket

利用套接字(Socket)开发网络应用程序早已被广泛的采用,以至于成为事实上的标准。


网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。


通信的两端都要有Socket,是两台机器间通信的端点。


网络通信其实就是Socket间的通信。


Socket允许程序把网络连接当成一个流,数据在两个Socket间通过IO传输。


一般主动发起通信的应用程序属客户端,等待通信请求的为服务端。


Socket分类:


➢流套接字(stream socket) :使用TCP提供可依赖的字节流服务


➢数据报套接字(datagram socket) :使用UDP提供“尽力而为”的数据报服务


说白了就是IP地址和端口号组合在一起构成Socket


常用方法


image.png

相关文章
|
11月前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
231 11
|
3月前
|
JSON 移动开发 网络协议
Java网络编程:Socket通信与HTTP客户端
本文全面讲解Java网络编程,涵盖TCP与UDP协议区别、Socket编程、HTTP客户端开发及实战案例,助你掌握实时通信、文件传输、聊天应用等场景,附性能优化与面试高频问题解析。
|
23天前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
88 1
|
23天前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
92 2
|
26天前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
209 0
|
12月前
|
Java 程序员
JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
在Java编程中,网络资源的获取与处理至关重要。本文介绍了如何使用URL与URLConnection高效、准确地获取网络资源。首先,通过`java.net.URL`类定位网络资源;其次,利用`URLConnection`类实现资源的读取与写入。文章还提供了最佳实践,包括异常处理、连接池、超时设置和请求头与响应头的合理配置,帮助Java程序员提升技能,应对复杂网络编程场景。
226 9
|
8月前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
286 23
|
9月前
|
安全 网络协议 Java
Java网络编程封装
Java网络编程封装原理旨在隐藏底层通信细节,提供简洁、安全的高层接口。通过简化开发、提高安全性和增强可维护性,封装使开发者能更高效地进行网络应用开发。常见的封装层次包括套接字层(如Socket和ServerSocket类),以及更高层次的HTTP请求封装(如RestTemplate)。示例代码展示了如何使用RestTemplate简化HTTP请求的发送与处理,确保代码清晰易维护。
|
9月前
|
缓存 网络协议 Java
JAVA网络IO之NIO/BIO
本文介绍了Java网络编程的基础与历史演进,重点阐述了IO和Socket的概念。Java的IO分为设备和接口两部分,通过流、字节、字符等方式实现与外部的交互。
258 0
|
12月前
|
网络协议 Java 物联网
Java网络编程知识点
Java网络编程知识点
149 13

热门文章

最新文章

下一篇
开通oss服务