当前位置: 首页 > news >正文

Java网络编程基础内容

IP地址

域名解析:

本机访问域名时,会从本地的DNS上解析数据(每个电脑都有),如果有,获取其对应的IP,通过IP访问服务器。如果本地没有,会去网络提供商的DNS找域名对应的IP,找到了就返回。

公网IP:连接互联网的IP

内网IP:局域网IP

1、网络通信的基本要素有哪些

2、IP地址是做什么的,具体有几种

3、如何查看本机ip,如何判断是否与对方互联

4、本地IP是多少

InetAddress

  • 万物皆对象:在java中IP对象就是InetAddress
InetAddress
public static InetAddress getLocalHost()获取本机IP,会以一个InetAddress对象返回
public static InetAddress getByName(String host)通过主机名获取IP对象
public String getHostName()获取主机名
public String getHostAddress()获取主机地址
public boolean isReachable(int timeout)判断是否能在timeout时间内连通该IP

1、IP地址的代表类是谁

2、如何获取本机IP对象

3、如何判断与某IP对象是否互通

端口

  • 标记正在计算机设备商运行的应用程序,被规定为16为二进制,范围为0~65535

ip对应主机,端口对应的是主机上的应用。如:假如微信占用36端口,用微信给张三发消息,在网络传输过程中,通过ip确定张三的电脑,端口确定张三电脑上的应用,他才能收到。

端口分为:

周知端口(常用的:HTTP是80、FTP是21)、注册端口(分配给用户进程)、动态端口(分配不固定)

自己开发的程序一般选择注册端口

1、端口的作用是什么

2、一个设备中,能否出现两个端口相同的应用程序,为什么

通信协议

  • 网络上通信的设配,事先规定的连接规则以及传输数据的规则,称之为网络协议

开放网络互联标准:OSI网络参考模型

OSI、TCP/IP

传输层的两个通信协议

  • UDP:用户数据报协议
  • TCP:传输控制协议

UDP协议

  • 特点:无连接;不可靠通信;效率相对高
  • 场景:语音通话、视频直播
  • 不事先建立连接,数据按照包发,一包数据包含:自己的IP、程序端口、目的地IP、程序端口和数据等
  • 发送方不关对方是否在线,数据发送对视也不管,如果接收方受到数据也不返回确认,是不可靠的。

TCP协议

  • 特点:面向连接;可靠通信;效率相对低
  • 场景:网页、文件下载、支付
  • TCP的最终目的:要保证在不可靠的信道上实现可靠的传输
  • 实现可靠通信的方式:三次握手、进行数据确认、四次挥手

三次握手:发送连接请求;返回响应;再次发出确认,连接建立。例如开远程会议:能听到吗?可以听到。 好的那我们开始吧。

  • 第一次和第二次握手是为了确认服务器的连接

  • 第二次和第三次握手是为了确认客户端的连接

四次挥手:发出断开连接;返回响应:稍等;返回响应:确认断开;确认正式断开。如:我走了;等下;带着橘子路上吃;行,你先去吧

第二次和第三次是服务端的响应

第一次和第四次是客户端的请求

1、通信协议是什么

2、UDP协议、TCP协议的特点是什么?各自适用于什么场景?

UDP通信

例如抖音上的一个视频:道路两旁的两个人,一边是厨师,炒完菜将菜从盘子中扔过去,另一边是服务员,用盘子接收飞过来的菜。

  • 厨师就是客户端,扔菜的socket
  • 服务员是服务端,接菜的socket
  • 盘子就是就是DatagramPacket()

java提供了一个java.net.DatagramSocket实现UDP通信

public DatagramSocket()创建客户端的socket对象,系统随机分配一个端口
public DatagramSocket(int port)创建服务端的socket对象,并指定端口号
public void send(DatagramPacket dp)发送数据包
public void receive(DatagramPacket p)使用数据包接收数据,接收的数据在数据包的byte[]中
DatagramPacket 创建数据包
public DatagramPacket(byte[] buf, int length, InteAddress, int port)参数1:要发或收的数据
参数2:要发或收的数据长度
参数3:服务端的IP地址
参数4:服务端的端口
public DatagramPacket(byte[] buf, int length)参数1:要发或收的数据
参数2:要发或收的数据长度
public int getLength()获取数据包,实际接收

1、UDP通信的对象是什么

2、如何获取和发送数据包

3、如何创建数据包对象

4、客户端和服务端先启动哪个

服务端

5、服务端运行时会在哪个方法中一直等待接收

receive方法

6、如何从接收的数据包中获取ip和port

数据包.getAddress().getHostAddress();

数据包.getPort();

7、如何关闭socket

socket.close();

TCP通信

1、tcp通信,客户端的代表类是谁

new socket(IP,端口)

2、如何使用socket管道进行收发数据

socket.getOutputStream();

socket.getInputStream();

3、tcp通信哪个包装流最好用

DataOutputStream、DataInputStream

1、服务端的代表类是谁

new ServerSocket(端口)

客户端和服务端都需要socket(插座)相当于两个渡口
客户端和服务端分别通过渡口收发数据

客户端(需要指定服务端ip和端口)
public Socket(String host,int port) 根据指定的ip、端口请求与服务器建立连接,连接通过就建立了socket(客户端的socket)
public OutputStream get OutputStream() 获取输出流对象
public InputStream get In putStream() 获取输入对象

服务端
public ServerSocket(int port) 为服务端注册端口
public Socket accept() 获取与客户端连接的socket(服务端的socket),服务端运行到这里的时候,会一直等待直到客户端连接上
public OutputStream get OutputStream() 获取输出流对象
public InputStream get In putStream() 获取输入对象

注意:

1.   客户端可能使用了包装流发送数据,接收端如果想用包装流必须使用和客户端相同的包装流
2.   记得使用关闭方法关闭流和socket
3.   只要客户端和服务端连接成功后,客户端发数据服务端都会收到,如果客户端发送的速度很快,也不会丢失数据
4.   客户端如果挂了,服务端如果没关闭就会产生一个异常•  1、TCP通信服务端用的类是谁
•  2、TCP通信服务端的开发步骤是什么

服务端一个线程只能对应一个客户端通信,main方法对应的是一个线程,所以服务端一个main方法只能与一个客户端通信。如果需要多方通信,就需要开启多线程。

仓库

https://gitee.com/gitee_q/network-programming.git

相关文章:

Java网络编程基础内容

IP地址 域名解析: 本机访问域名时,会从本地的DNS上解析数据(每个电脑都有),如果有,获取其对应的IP,通过IP访问服务器。如果本地没有,会去网络提供商的DNS找域名对应的IP&#xff0…...

DevChat:开发者专属的基于IDE插件化编程协助工具

DevChat:开发者专属的基于IDE插件化编程协助工具 一、DevChat 的介绍1.1 DevChat 简介1.2 DevChat 优势 二、DevChat 在 VSCode 上的使用2.1 安装 DevChat2.2 注册 DevChat2.3 使用 DevChat 三、DevChat 的实战四、总结 一、DevChat 的介绍 在AI浪潮的席卷下&#x…...

Python数据容器之[列表]

Python数据容器 Python中的数据容器: 一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素 每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。 数据容器根据特点的不同,如: 是否支…...

大咖直播间”系列直播课第一期——如何抓住HarmonyOS带来的机遇?

想了解#HarmonyOS#背后隐藏着怎样的商业机遇? 想成功搭上万物互联快车,与HarmonyOS一起发展壮大? 想知道开发者应该怎样把握时代机遇,实现高质高效就业? 答案尽在#华为开发者学堂#《大咖直播间》第一期课程&#xff0c…...

跨域:利用JSONP、WebSocket实现跨域访问

跨域基础知识点:跨域知识点 iframe实现跨域的四种方式:iframe实现跨域的四种方式 注:本篇中使用到的虚拟主机也是上面iframe中配置的 目录 JSONP跨域 JSONP介绍 跨域实验: WebSocket跨域 websocket介绍 跨域实验 JSONP跨域 …...

java项目之戒烟网站(ssm+vue)

项目简介 戒烟网站实现了以下功能: 用户可以对首页,用户分享,论坛交流,公告文章,个人中心,后台管理等功能进行操作。 管理员可以对网站所有功能进行管理,包括管理用户的基本信息。 &#x1f4…...

Redis集群,你真的学会了吗?

目录 1、为什么引入集群 1.1、先来了解集群是什么 1.2、哨兵模式的缺陷 引入集群解决了什么问题 1.3、使用集群,如何存储数据 2、三种主流的分片方式【经典面试题】 2.1、哈希求余算法 2.1.1、哈希求余算法的介绍 2.1.2、哈希求余算法如何扩容 2.2、一致性…...

手机地磁传感器与常见问题

在手机中,存在不少传感器,例如光距感,陀螺仪,重力加速度,地磁等。关于各传感器,虽功能作用大家都有所了解,但是在研发设计debug过程中,却总是会遇到很多头疼的问题。关于传感器&…...

EF Core 数据库映射成实体类

首先在 NuGet 包管理器中安装三个包 Microsoft.EntityFrameworkCore.SqlServer 是一个用于与 SQL Server 数据库进行交互的实体框架核心包。这个包提供了方便的方法和工具,用于在 .NET Core 应用程序中操作 SQL Server 数据库。 Microsoft.EntityFrameworkCore.Too…...

【算法优选】 动态规划之斐波那契数列模型

文章目录 🎋前言🍀[第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/)🚩题目描述🚩算法流程🚩代码实现 🎄[使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing…...

FreeRTOS知识梳理

一、RTOS:Real time operating system,中文意思为 实时操作系统,它是一类操作系统,比如uc/OS、FreeRTOS、RTX、RT-Thread 这些都是实时操作系统。 二、移植FreeRTOS到STM32F103C8T6上 interface选择CMSIS_V1,RCC选择Crystal Ceramic Resonator 。 …...

冒泡排序算法(C++版)

1、什么是冒泡排序? 冒泡排序(Bubble Sort)是一种简单的排序算法,其基本思想是多次遍历待排序的元素序列,每次比较相邻两个元素,如果它们的顺序不正确就交换它们,直到整个序列有序。在每一轮遍…...

第22章_数据库的设计规范

文章目录 范式的概念三范式范式一范式二范式三 反范式总结 范式的概念 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库&#xff…...

5. 深度学习——正则化

机器学习面试题汇总与解析——正则化 本章讲解知识点 什么是正则化为什么要使用正则化?详细讲解正则化本专栏适合于Python已经入门的学生或人士,有一定的编程基础。本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。本专栏针对面试题答案进行了优化,尽量做到好…...

【链表和顺序表的优缺点】

...

iOS移动应用安全加固:保护您的App免受恶意攻击的重要步骤

目录 iOS移动应用安全加固:保护您的App免受恶意攻击的重要步骤 摘要 引言 一、APP加固的概念 二、APP加固方案的比较 三、保护iOS应用的安全 四、总结 参考资料 摘要 本文介绍了移动应用程序(App)加固的概念和流程,以及市…...

C# .NET Core API 注入Swagger

C# .NET Core API 注入Swagger 环境 Windows 10Visual Studio 2019(2017就有可以集中发布到publish目录的功能了吧)C#.NET Core 可跨平台发布代码,超级奈斯NuGet 套件管理dll将方法封装(据说可以提高效率,就像是我们用的dll那种感觉)Swagger 让接口可视化编写时间2020-12-09 …...

家庭安全计划 挑战赛| 溺水预防

溺水预防 从了解到行动 家庭安全计划 | 少年急救官 地震避险逃生该怎么做? 起火了该如何应对? 哪些行为容易导致溺水? 家庭风险隐患有哪些? 家庭逃生演练四步骤你会吗? 国际救助儿童会(英国&#xff…...

飞书开发学习笔记(五)-Python快速开发网页应用

飞书开发学习笔记(五)-Python快速开发网页应用 一.下载示例代码 首先进入飞书开放平台: https://open.feishu.cn/app 凭证与基础信息 页面,在 应用凭证 中获取 App ID 和 App Secret 值。 教程和示例代码位置:https://open.feishu.cn/document/home/integrating-…...

对测试职业发展的思考

虽然在测试行业摸爬滚打了很年,随着年龄的增长,职位的升迁,似乎已经走到了尽头,因而还是时不时觉得自己的职业发展目标很模糊,这是最近对自己职业发展的一些思考,希望与大家进行分享和探讨: 1、…...

Unity-MCP协议:可嵌入、可协商的AI上下文通信标准

1. 这不是又一个“AI插件”,而是Unity开发工作流的底层重定义你有没有过这样的时刻:在Unity里反复调整Animator Controller的过渡条件,只为让角色转身动画不穿模;写完一段NavMesh寻路逻辑,却要花两小时调试Agent卡在斜…...

硬件答辩问题总结

一、电源纹波是什么,为什么LDO的小,DCDC的大1.电源纹波电源纹波 是指直流电源输出电压上叠加的 交流波动成分,表现为电压在理想直流值附近上下波动。2.LDO 纹波小原理LDO 内部是一个 调整管(可变电阻) 串联在输入和输出…...

网易云音乐NCM转MP3终极指南:ncmdump工具完整使用教程

网易云音乐NCM转MP3终极指南:ncmdump工具完整使用教程 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经从网易云音乐下载了心爱的歌曲,却发现只能在特定播放器上收听?NCM格式的限制让音乐…...

DeepSeek基准测试避坑手册:92%开发者忽略的4大陷阱——硬件配置偏差、tokenizer不一致、batch size幻觉、温度值污染

更多请点击: https://codechina.net 第一章:DeepSeek基准测试避坑手册:92%开发者忽略的4大陷阱——硬件配置偏差、tokenizer不一致、batch size幻觉、温度值污染 硬件配置偏差:GPU显存与计算精度的隐性干扰 在A100(8…...

智慧树自动刷课助手:3步告别手动操作的学习效率工具

智慧树自动刷课助手:3步告别手动操作的学习效率工具 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台的重复刷课操作而烦恼吗?智…...

pan-baidu-download:百度网盘多线程下载加速器架构解析与性能优化指南

pan-baidu-download:百度网盘多线程下载加速器架构解析与性能优化指南 【免费下载链接】pan-baidu-download 百度网盘下载脚本 项目地址: https://gitcode.com/gh_mirrors/pa/pan-baidu-download pan-baidu-download是一款基于Python开发的百度网盘命令行下载…...

1901-2022年中国气温变化分析实战:用这份1km栅格数据我们能发现什么?

1901-2022年中国气温变化分析实战:如何从1km栅格数据中挖掘气候演变规律当一份覆盖122年、分辨率精确到1公里的气温栅格数据摆在面前时,我们看到的不仅是数字矩阵,更是一部写在经纬度坐标里的气候变迁史诗。这份由逐月数据聚合生成的逐年气温…...

Adobe-GenP 3.0:轻松激活Adobe全家桶的完整指南

Adobe-GenP 3.0:轻松激活Adobe全家桶的完整指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0是一款专为Adobe Creative Cloud系列软件…...

抖音内容批量下载实战:从零开始构建个人视频资料库

抖音内容批量下载实战:从零开始构建个人视频资料库 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…...

正视孩童情绪波动,耐心陪伴平稳疏导

孩子的情绪就像夏天的天气,前一秒还晴空万里,后一秒可能就乌云密布。面对突如其来的哭闹、发脾气或者闷闷不乐,很多家长会急着“灭火”——要么讲道理,要么直接制止。但其实,情绪波动本身不是问题,它是孩子…...