当前位置: 首页 > 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、…...

YimMenu安全指南与效率提升:GTA5辅助工具全面应用手册

YimMenu安全指南与效率提升:GTA5辅助工具全面应用手册 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimM…...

基于MATLAB Robotics Toolbox的机械臂轨迹规划仿真与数据可视化分析

基于MATLAB Robotics Toolbox的机械臂轨迹规划仿真与数据可视化分析 摘要 机械臂轨迹规划是机器人学研究的核心问题之一,直接影响工业机器人的作业精度、运动平稳性和工作效率。本文以六自由度PUMA560型机械臂为研究对象,利用Peter Corke开发的Robotics Toolbox for MATLAB…...

如何通过HFS哈氏训练改善注意力缺陷儿童的集中程度?

通过HFS哈氏训练提升注意力缺陷儿童的集中技巧 HFS哈氏训练是一种针对注意力缺陷儿童的有效方法,旨在提升他们的集中技巧。这种训练通过特定的游戏和活动,帮助儿童培养注意力控制能力。首先,家长和教育者可以引导孩子参与简短且有趣的任务&am…...

IwrQk实战指南:跨平台Iwara视频社区客户端从安装到精通

IwrQk实战指南:跨平台Iwara视频社区客户端从安装到精通 【免费下载链接】iwrqk Unofficial Iwara Flutter Client 项目地址: https://gitcode.com/gh_mirrors/iw/iwrqk IwrQk是一款基于Flutter开发的跨平台Iwara视频社区客户端,专为技术爱好者和普…...

Qwen3-0.6B-FP8轻量化部署对比:FP8量化带来的显存与速度优势实测

Qwen3-0.6B-FP8轻量化部署对比:FP8量化带来的显存与速度优势实测 最近在折腾一些小模型的部署,发现了一个挺有意思的东西:Qwen3-0.6B的FP8量化版本。你可能听说过FP16,甚至INT8量化,但FP8这个新玩意儿,到底…...

linux中systemctl详细理解及常用命令解析

一、systemctl理解Linux 服务管理两种方式service和systemctlsystemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。systemd对应的进程管理命令是systemctl1. systemctl命令兼容了service即…...

5个高效乐谱资源获取技巧:音乐爱好者的MuseScore下载指南

5个高效乐谱资源获取技巧:音乐爱好者的MuseScore下载指南 【免费下载链接】dl-librescore Download sheet music 项目地址: https://gitcode.com/gh_mirrors/dl/dl-librescore 在数字音乐时代,获取高质量乐谱资源往往面临格式限制、下载门槛等问题…...

FireRedASR-AED-L模型Node.js后端调用实战:构建高并发语音处理API

FireRedASR-AED-L模型Node.js后端调用实战:构建高并发语音处理API 语音转文字的需求现在越来越普遍,从会议记录到客服录音分析,到处都能用上。如果你手头有一个像FireRedASR-AED-L这样强大的语音识别模型服务,怎么把它集成到你的…...

MAI-UI-8B应用场景解析:如何用AI自动分析软件界面与操作流程

MAI-UI-8B应用场景解析:如何用AI自动分析软件界面与操作流程 1. 理解MAI-UI-8B的核心能力 MAI-UI-8B是一款专为图形用户界面(GUI)分析而设计的AI模型。它能够像人类一样"看"懂软件界面,理解各种UI元素的功能,并预测用户可能的操作…...

八大网盘直链下载神器:告别客户端依赖,解锁高速下载新体验

八大网盘直链下载神器:告别客户端依赖,解锁高速下载新体验 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国…...