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

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络&#xf…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言: 类加载器 1. …...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...