初学网络编程

网络编程是指编写能够在网络环境中运行,进行数据通信的程序的过程。它涵盖了从建立网络连接、发送和接收数据,到关闭连接等一系列操作。网络编程是开发网络应用程序的基础,它使得不同的计算机和设备能够通过网络进行数据交换和通信。

三个核心概念

IP(Internet Protocol)

是互联网协议的意思,它的主要作用是为互联网上的每一台设备分配一个唯一的逻辑地址,这个地址就是我们常说的IP地址。IP地址用于在网络中标识和定位设备,使得数据能够准确地从一个地方传输到另一个地方。IP地址根据版本可以分类为:IPv4和IPv6

InetAddress类

此类表示互联网协议 (IP) 地址。通常包括一个主机名和一个IP地址,并提供了获取和操作IP地址的方法,这些方法可以用于网络编程、服务器配置、主机管理等场景。是Java网络编程和系统配置的基础类之一。

InetAddress类的主要方法包括:

  1. getByName(String host): 通过主机名或IP地址字符串获取一个InetAddress对象。
  2. getLocalHost(): 获取本地主机的InetAddress对象。
  3. getHostName(): 获取InetAddress对象所代表的主机的主机名。
  4. getHostAddress(): 获取InetAddress对象所代表的主机的IP地址。
  5. getCanonicalHostName(): 获取InetAddress对象所代表的主机的规范化主机名。
  6. getAddress(): 获取InetAddress对象的原始IP地址(以字节数组表示)。
  7. isMulticastAddress(): 判断InetAddress对象是否为多播地址。
  8. isLoopbackAddress(): 判断InetAddress对象是否为回环地址。

因为InetAddress类没有公共构造函数,因此不能直接通过new关键字创建其对象。而是应该使用上述的静态方法来获取InetAddress对象。 

端口(Port)

端口是用于区分不同的网络服务或进程的。每个网络服务或进程都会绑定到一个特定的端口上,以便客户端能够通过该端口与之进行通信,是应用程序在设备中唯一的标识。

在计算机通信中,每个运行的进程或服务都需要一个或多个端口来接收和发送数据。端口号是一个非负整数,范围通常是从0到65535。

端口可以大致分为以下几类:

  • 公认端口:从0到1023,这些端口被系统或应用程序保留,通常用于知名的网络服务,如HTTP(80端口)、HTTPS(443端口)、FTP(21端口)等。

  • 注册端口:从1024到49151,这些端口是为没有公认端口号的应用程序保留的。这些端口可以由用户或应用程序进行注册,以提供特定服务。

  • 动态端口:从49152到65535,这些端口是临时端口,用于短暂的、一次性的服务。这些端口通常不由系统或服务预留,而是由应用程序在需要时动态分配。

协议(Protocol)

网络通信必须依赖于各种协议,如TCP/IP、HTTP、FTP等。这些协议定义了数据如何在网络中传输,包括数据的分组、路由、确认接收等过程,是数据在网络中传输的规则,确保了不同计算机和设备之间能够相互通信和协同工作。

TCP协议和UDP协议

TCP协议和UDP协议是计算机网络中两种主要的传输层协议,它们各自具有不同的特点和应用场景。

TCP协议,全称是传输控制协议(Transmission Control Protocol),是一种面向连接的、可靠的、字节流的传输层通信协议。TCP在发送数据前需要先建立连接,通过三次握手确保发送方和接收方之间的连接建立成功。

在数据传输过程中,TCP使用确认和重传机制,确保数据包的顺序性和完整性。如果数据包丢失或损坏,TCP会负责重传,直到数据被正确接收。因此,TCP协议适用于对数据可靠性要求较高的应用场景,如文件传输、电子邮件和网页浏览等。

UDP协议,全称是用户数据报协议(User Datagram Protocol),是一种无连接的传输层协议。UDP在发送数据时并不建立连接,而是直接将数据报发送到目标地址。它不保证数据的可靠传输,也不关心数据是否到达目的地,以及数据的顺序和完整性。因此,UDP协议的开销较小,处理速度通常比TCP快。UDP适用于对数据可靠性要求较低、传输经济的应用场景,如音频和视频流、在线游戏、语音通话等实时应用。这些应用可以容忍偶尔的数据丢失,但对传输速度有较高要求。

TCP协议下客户端向服务端发送文字信息实例

客户端代码

 服务端代码

运行服务端后运行客户端,客户端与服务端建立连接。

 客户端发送信息,服务端打印接收的信息。

 客户端输入-1结束消息发送,与服务端断开连接,服务端与客户端结束运行。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下。报告是任何测试执行中最重要的部分,因为它可以帮助用户了…

Flask快速搭建文件上传服务与接口

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、需求背景 前端通过浏览器,访问后端服务器地址,将目标文件进行上传。 访问地址:http://127.0.0…

Java 中文官方教程 2022 版(三)

原文:docs.oracle.com/javase/tutorial/reallybigindex.html 对象 原文:docs.oracle.com/javase/tutorial/java/javaOO/objects.html 一个典型的 Java 程序会创建许多对象,正如您所知,这些对象通过调用方法进行交互。通过这些对象…

前端开发攻略---简化响应式设计:利用 SCSS 优雅管理媒体查询

1、演示 2、未优化前的代码 .header {width: 100px;height: 100px;background-color: red; } media (min-width: 320px) and (max-width: 480px) {.header {width: 10px;} } media (min-width: 320px) and (max-width: 480px) {.header {height: 20px;} } media (min-width: 48…

详细介绍微信小程序app.js

这一节,我们详细介绍app.js 这个文件。这个文件的重要性我就不再赘述,前面已经介绍了。 一、app.js是项目的主控文件 任何一个程序都是需要一个入口的,就好比我们在学c的时候就会有一个main函数,其他语言基本都是一样。很明确的…

隆道商机订阅服务|“您有一条新的商机,请注意查收”

隆道商机订阅服务 自定义关键词,智能甄别商机,随时随地查看,多平台实时推送。 核心功能 商机无限查 您可以根据不同的维度,如项目类型、项目地区等,对招标采购信息进行查询和筛选,以精准查找全网范围内的…

【Spring源码】JDBC数据源访问实现

一、阅读线索 开始我们今天的对Spring的【模块阅读】,来看看Data Access的JDBC模块是怎么设计的。 源码阅读前,我们要先思考下本次的阅读线索: JDBC模块有什么作用该模块是怎么设计的我们从这个模块可以学到什么 二、探索 关于阅读线索一…

Python实现BOA蝴蝶优化算法优化Catboost回归模型(CatBoostRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算…

十分钟到底能不能讲明白ROS到底能做啥

总结 录完视频发现十分钟不能,总共花了20分钟。 提纲: 课程、竞赛、论文Linux、C、Python、Github和ROS关联性强平台-资格和ROS关联性弱速度-成绩路径规划-全局和局部全局-侧重路径长短-找一条最优(短)的路局部-侧重速度控制-用…

数据可视化-ECharts Html项目实战(10)

在之前的文章中,我们学习了如何在ECharts中编写雷达图,实现特殊效果的插入运用,函数的插入,以及多图表雷达图。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错&…

Python基于Django的微博热搜、微博舆论可视化系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

host文件nginx代理 综合理解

之前一直理解得很糙 导致遇到问题很迷糊 今天经过大佬两句话讲明白了 特此记录 host文件 首先host做了代理 也就是对浏览器的DNS寻址做了拦截 具体原理可以参照当我们在地址栏输入URL的时候浏览器发生了什么 例如127.0.0.1 www.baidu.com 将 127.0.0.1 www.baidu.com 链接自…

春游江淮|出发,上宁国“村游”去

竹川村、赤岸村打卡佳处,春花烂漫,春意盎然,胡乐镇竹川村、赤岸村的油菜花,是宁国春天不可错过的风光。等大片大片的油菜花盛放,与悠悠远山交相辉映,可以来此骑行、散步,静静欣赏美好的春日风光。 山门村 世外桃源经过奇特的“山门洞”,来到山门村,村内古木参天,在春…

Cloudshark数据包分析功能介绍

什么是CloudShark CloudShark是一种基于Web的数据包分析平台,可以认为是wiresshark的cloud版本,但是其在威胁分析等方面比Wireshark的功能强大,如下是他们的主要区别。 Wireshark VS Cloudshark Wireshark定位是一款本地开源的网络数据包分…

2024年第十四届MathorCup数学应用挑战赛B题解题思路

B题https://mbd.pub/o/bread/ZZ6Wm5dx 问题1:对于附件I(Pre_test文件夹)给定的三张甲骨文原始拓片图 片进行图像预处理,提取图像特征,建立甲骨文图像预处理模型,实现对 甲骨文图像干扰元素的初步判别和处理。 针对问题1,对于附件…

考虑预同步的虚拟同步机T型三电平逆变器并离网MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 三相 T 型三电平逆变器电路如图所示,逆变器主回路由三个单相 T 型逆变器组成。 直流侧输入电压为 UPV,直流侧中点电位 O 设为零电位,交流侧输出侧是三相三线制连…

Linux的学习之路:6、Linux编译器-gcc/g++使用

摘要 本文主要是说一些gcc的使用,g和gcc使用一样就没有特殊讲述。 目录 摘要 一、背景知识 二、gcc如何完成 1、预处理(进行宏替换) 2、编译(生成汇编) 3、汇编(生成机器可识别代码 4、链接(生成可执行文件或…

如何调节变阻器的电阻值?

变阻器是一种可以改变电阻值的电子元件,广泛应用于各种电子设备中。调节变阻器的电阻值可以实现对电路中电流和电压的控制,从而实现对设备的控制和调节。下面是如何调节变阻器的电阻值的方法: 了解变阻器的基本原理:变阻器主要由固…

统信UOS桌面操作系统1060上隐藏Windows磁盘

原文链接:统信UOS桌面操作系统1060上隐藏Windows磁盘 Hello,大家好啊!继之前我们讨论了如何在统信UOS桌面操作系统1060上安装双系统之后,今天我要给大家介绍的是,在这个基础上如何隐藏Windows磁盘分区。这样做可以让你…

CDN优化

一、是什么 CDN (全称 Content Delivery Network),即内容分发网络 构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降…