首页 > 编程语言 >JavaSE基础知识分享(十三)

JavaSE基础知识分享(十三)

时间:2024-08-22 19:17:26浏览次数:6  
标签:UDP Socket IP 网络 基础知识 地址 InetAddress JavaSE 分享

写在前面

今天继续讲Java中的网络编程的知识!

网络编程

概述

计算机网络
计算机网络是将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。例如:极域。

网络编程
网络编程是实现网络互连的不同计算机上运行的程序间可以进行数据交换的技术。

网络参考模型图

解释

网络模型7层概述:

  1. 物理层

    • 主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。
    • 主要作用是传输比特流(由 1、0 转化为电流强弱来进行传输)。
    • 数据单位:比特。
  2. 数据链路层

    • 将从物理层接收的数据进行 MAC 地址的封装与解封装。
    • 数据单位:帧。
    • 主要设备:交换机。
  3. 网络层

    • 将从下层接收到的数据进行 IP 地址的封装与解封装。
    • 数据单位:数据包。
    • 主要设备:路由器。
  4. 传输层

    • 定义了数据传输的协议和端口号(如 WWW 端口 80)。
    • 主要协议:TCP(传输控制协议)、UDP(用户数据报协议)。
    • 数据单位:段。
  5. 会话层

    • 通过传输层建立数据传输的通路,发起或接受会话请求。
    • 设备之间需要互相认识(可以是 IP 地址、MAC 地址或主机名)。
  6. 表示层

    • 对接收的数据进行解释、加密与解密、压缩与解压缩等。
    • 将计算机能识别的东西转换成人能识别的东西(如图片、声音等)。
  7. 应用层

    • 终端应用,如 FTP(文件下载)、WEB(浏览器)、QQ(聊天)等。

网络通信三要素

  1. IP 地址

    • 网络中设备的标识,不易记忆,可用主机名。
    • IP 地址的组成:网络号码 + 主机地址。
    • A 类 IP 地址: 1.0.0.1127.255.255.254
      • 例如 10.X.X.X 是私有地址。
      • 127.X.X.X 是保留地址,用做循环测试用的。
    • B 类 IP 地址: 128.0.0.1191.255.255.254
      • 172.16.0.0172.31.255.255 是私有地址。
      • 169.254.X.X 是保留地址。
    • C 类 IP 地址: 192.0.0.1223.255.255.254
      • 192.168.X.X 是私有地址。
    • D 类 IP 地址: 224.0.0.1239.255.255.254(多播地址)。
    • E 类 IP 地址: 240.0.0.1247.255.255.254(保留地址)。

    查看本机 IP 地址

    • DOS 命令: ipconfig
    • CentOS 7: ip addr
    • CentOS 6: ifconfig
  2. 端口号

    • 用于标识进程的逻辑地址,不同进程的标识。
    • 有效端口范围:065535,其中 01024 为系统使用或保留端口。
    • 通过 netstat -ano 可以查看端口号。
  3. 传输协议

    • 通讯的规则。
    • 常见协议:TCP、UDP。

InetAddress 类的使用

获取和操作 IP 地址

  • 静态方法:使用 InetAddress 类的静态方法获取 InetAddress 对象,再进行操作。

方法

  • InetAddress[] getAllByName(String host)
    返回指定主机名称的 IP 地址数组。

  • InetAddress getByAddress(byte[] addr)
    根据原始 IP 地址返回 InetAddress 对象。

  • InetAddress getByAddress(String host, byte[] addr)
    根据主机名和 IP 地址创建 InetAddress 对象。

  • InetAddress getByName(String host)
    确定主机名称的 IP 地址。

Socket

Socket 套接字

  • 网络上具有唯一标识的 IP 地址和端口号组合在一起构成套接字。
  • Socket 原理机制:通信的两端都有 Socket,通过 IO 流传输数据。

UDP

概述

  • 使用 DatagramSocketDatagramPacket 进行 UDP 网络编程。

  • 步骤

    1. 建立 UDP 的 socket 服务。
    2. 将数据封装成数据包。
    3. 通过 UDP 的 socket 服务发送数据包。
    4. 关闭资源。
  • 实现

    • 发送端

    • 接收端

TCP

概述

  • 使用 SocketServerSocket 进行 TCP 网络编程。

  • 步骤

    1. 客户端建立 Socket 服务并连接服务器。
    2. 建立数据传输通道,通过 IO 流进行数据的读取和写入。
    3. 关闭资源。
  • 实现

    • 客户端

    • 服务器端

TCP 传输问题

  • 问题:客户端连接上服务端,两端都在等待,没有任何数据传输。
    • 解决办法:
      • 自定义结束标记。
      • 使用 shutdownInputshutdownOutput 方法。

标签:UDP,Socket,IP,网络,基础知识,地址,InetAddress,JavaSE,分享
From: https://www.cnblogs.com/cjybigdatablog/p/18374536

相关文章

  • 小红书分享踩坑和解决
    ​小红书官方介入链接:小红书分享开放平台下载sdk文件,位置如下图所示 之后可以按照官方文档进行开发,接入也较简单,这里主要是说明一些隐藏的坑点一、分享应用内的文件到小红书(这里主要是指应用包名下的文件内容),需要注意setFileProviderAuthority()这个方法。例如我的代码如下......
  • [工具推荐]Hessian反序列化漏洞利用工具分享
    如果觉得该文章有帮助的,麻烦师傅们可以搜索下微信公众号:良月安全。点个关注,感谢师傅们的支持。免责声明本号所发布的所有内容,包括但不限于信息、工具、项目以及文章,均旨在提供学习与研究之用。所有工具安全性自测。如因此产生的一切不良后果与文章作者和本公众号无关。如有涉......
  • Python入门最完整的基础知识大全【纯干货,建议收藏】!
    主要内容如下:1.用Python做数据分析的重要性Python在数据分析和交互、探索性计算以及数据可视化等方面都显得比较活跃,这就是Python作为数据分析的原因之一,python拥有numpy、matplotlib、scikit-learn、pandas、ipython等工具在科学计算方面十分有优势,尤其是pandas,在处理中......
  • 超声波污水处理之高浓度有机废水--经验分享
    最近对接几位客户咨询污水废水的油水分离实验,一直想分享一下超声波清洗机如何针对污水进行破乳脱水,让更多有需要的客户了解。首先总结,当前含油污水的排放、处理成本、处理技术随时工业的发展,含油废水的排放量与日俱增极为广泛,对环境的危害日趋严重。其中油份大致分类为浮油......
  • 秋招红队面试经验分享
    吉祥知识星球http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247485367&idx=1&sn=837891059c360ad60db7e9ac980a3321&chksm=c0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd《网安面试指南》《Java代码审计》《Web安全》《应......
  • 音频提取软件分享:6款好用音频提取工具推荐
    在现代数字媒体中,音频提取已经成为一项至关重要的技能。无论你是视频创作者、播客主持人,还是音乐爱好者,从视频、电影或其他多媒体文件中提取音频,都是一项非常有用的操作。本文将围绕音频提取,介绍这项技术的应用、方法和最佳工具,帮助你更好地掌握音频提取的技巧!一、音频提取......
  • uniapp__微信小程序分享好友朋友圈的功能
    1、实现效果这个如果不写代码就是灰色的不能使用 2、api地址uniapp这是使用的api地址点击即可进入   uniapp 3、这是找到个大佬的文章很好用给大家看下uni-app小程序分享功能实现_uniapponsharetimeline-CSDN博客4、记录是方便自己学习4.1把这个建一个文件......
  • 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2024年7月刊
    本文为大家整理了墨天轮数据社区2024年7月发布的优质技术文章/文档,主题涵盖Oracle、MySQL、PostgreSQL等主流数据库系统以及国产数据库的深度教程和实用指南。从基础的安装配置到复杂的故障排查,再到性能优化的高级技巧,每篇文章都是由领域专家精心撰写。此外,还有常用脚本和操作注意......
  • 收拾混乱账密,IT特权账号管理实践分享
    随着网络设备、服务器、应用等被管对象越来越多,而要访问这些被管对象,基本入口都会要求登录账密。而处于安全的考虑,IT部门都会制定相应的密码策略,包括密码复杂度要求,密码有效期、密码重复度等。如果您习惯使用纸质、Word、Excel等来记录众多账密,那么当您的设备丢失或出现问题时,将......
  • 文心快码 Baidu Comate 前端工程师观点分享:智能代码助手需要什么(二)
    本系列视频来自百度工程效能部的前端研发经理杨经纬,她在由开源中国主办的“AI编程革新研发效能”OSC源创会·杭州站·105期线下沙龙活动上,从一款文心快码(BaiduComate)前端工程师的角度,分享了关于智能研发工具本身的研发历程和理念。以下视频是关于【智能代码助手需要什么】的......