Java网络编程

简介: Java网络编程

1 网络编程概述【理解】

计算机网络

是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系

统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统

网络编程

在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换

2 网络编程三要素【理解】

IP 地址

要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数

据的计算机和识别发送的计算机,而 IP 地址就是这个标识号。也就是设备的标识

端口

网络的通信,本质上是两个应用程序的通信。每台计算机都有很多的应用程序,那么在网络通信时,如何区

分这些应用程序呢?如果说 IP 地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的应用程序

了。也就是应用程序的标识

协议

通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定

的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则

被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守

才能完成数据交换。常见的协议有 UDP 协议和 TCP 协议

3 IP地址【理解】

IP 地址:是网络中设备的唯一标识

IP 地址分为两大类

IPv4 :是给每个连接在网络上的主机分配一个 32bit 地址。按照 TCP/IP 规定, IP 地址用二进制来表示,每

个 IP 地址长 32bit ,也就是 4 个字节。例如一个采用二进制形式的 IP 地址是 “11000000 10101000

00000001 01000010” ,这么长的地址,处理起来也太费劲了。为了方便使用, IP 地址经常被写成十进制

的形式,中间使用符号 “.” 分隔不同的字节。于是,上面的 IP 地址可以表示为 “192.168.1.66” 。 IP 地址的这

种表示法叫做 “ 点分十进制表示法 ” ,这显然比 1 和 0 容易记忆得多

IPv6 :由于互联网的蓬勃发展, IP 地址的需求量愈来愈大,但是网络地址资源有限,使得 IP 的分配越发

紧张。为了扩大地址空间,通过 IPv6 重新定义地址空间,采用 128 位地址长度,每 16 个字节一组,分成 8

组十六进制数,这样就解决了网络地址资源数量不够的问题

DOS 常用命令:

ipconfifig :查看本机 IP 地址

ping IP 地址:检查网络是否连通

特殊 IP 地址:

127.0.0.1 :是回送地址,可以代表本机地址,一般用来测试使用

4 InetAddress【应用】

InetAddress :此类表示 Internet 协议( IP )地址

相关方法


20200803174419577.png

代码演示

public class InetAddressDemo {
public static void main ( String [] args ) throws UnknownHostException {
//InetAddress address = InetAddress.getByName("itheima");
InetAddress address = InetAddress . getByName ( "192.168.1.66" );
//public String getHostName() :获取此 IP 地址的主机名
String name = address . getHostName ();
//public String getHostAddress() :返回文本显示中的 IP 地址字符串
String ip = address . getHostAddress ();
System . out . println ( " 主机名: " + name );
System . out . println ( "IP 地址: " + ip );
}
}

5 端口和协议【理解】

端口

设备上应用程序的唯一标识

端口号

用两个字节表示的整数,它的取值范围是 0~65535 。其中, 0~1023 之间的端口号用于一些知名的网络服

务和应用,普通的应用程序需要使用 1024 以上的端口号。如果端口号被另外一个服务或应用所占用,会

导致当前程序启动失败

协议

计算机网络中,连接和通信的规则被称为网络通信协议

UDP 协议

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

UDP 是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台

计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在

收到数据时,也不会向发送端反馈是否收到数据。

由于使用 UDP 协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输

例如视频会议通常采用 UDP 协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太

大影响。但是在使用 UDP 协议传送数据时,由于 UDP 的面向无连接性,不能保证数据的完整性,因此在

传输重要数据时不建议使用 UDP 协议

TCP 协议

传输控制协议 (Transmission Control Protocol)

TCP 协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数

据,它提供了两台计算机之间可靠无差错的数据传输。在 TCP 连接中必须要明确客户端与服务器端,由

客户端向服务端发出连接请求,每次连接的创建都需要经过 “ 三次握手 ”

三次握手: TCP 协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠

第一次握手,客户端向服务器端发出连接请求,等待服务器确认

第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求

第三次握手,客户端再次向服务器端发送确认信息,确认连接

完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,

TCP 协议可以保证传输数据的安全,所以应用十分广泛。例如上传文件、下载文件、浏览网页等

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