TCP网络编程

news2024/11/23 15:11:05

1. 网络相关概念

  1. 网络通信:两台设备之间通过网络实现数据传输;
  2. java.net包下提供了一系列的类或接口,完成网络通信;

局域网:覆盖一个学校、单位、公司;
城域网:覆盖一个城市;
广域网:覆盖一个国家、全球;

1.1 ip地址

  1. 概念:用于唯一标识网络中的每台计算机。
  2. 查看ip地址:ipconfig
  3. ip表示:对于IPv4 (一个字节8位,四个字节32位)
    在这里插入图片描述
  4. ip地址的组成:网络地址(xx市xx区xx小区)+主机地址(房间号)
  5. IPv4地址最大的问题是网络地址资源有限,严重制约了互联网的发展
  6. IPv6使用128位表示地址,相当于是16个字节(128/8)
  7. 127.0.0.1代表的是本机地址;

1.2 域名

  1. 概念:将ip地址映射成域名;域名就代表ip地址,并且方便记忆
    在这里插入图片描述
    ip唯一确定主机,端口号唯一确定主机上的程序服务;

1.3 端口号

  1. 端口号:用于标识计算机上某个特定的网络程序;
  2. 表现形式:整数形式,范围0~65535(用二个字节表示端口,2^16-1);
  3. 0~1024已被占用,比如:ssh 22,ftp 21,smtp 25,http 80;
  4. 常用的网络程序端口号:tomcat(8080),mysql(3306),oracle(1521),sqlserver(1433);

1.4 网络通讯协议

  1. 概念:语言本身就是一种协议,在网络编程中,数据的组织形式就是协议;
  2. TCP协议:传输控制协议,三次握手;
  3. UDP协议:用户数据协议,发送数据结束时无需释放资源;

2. TCP字节流编程

2.1 InetAddress类

在这里插入图片描述

  1. getLocalHost->获取本机InetAddress对象(ip地址对象 主机名+ip地址)
  2. getByName->根据 主机名/域名 获取InetAddress对象(ip地址对象 主机名+ip地址)
    在这里插入图片描述
  3. 获取InetAddress对象(主机名/域名+ip地址)其中的ip地址
  4. 获取InetAddress对象(主机名/域名+ip地址)其中的主机名/域名在这里插入图片描述
    5.

2.2 Socket

  1. 通信的两端都要有Socket,是两台机器间通信的端点;
  2. 网络通信实际上就是Socket间的通信;
  3. Socket允许程序把网络连接看成一个流,数据在两个Socket间通过IO流传输;
    在这里插入图片描述

2.2.1 客户端到服务端

在这里插入图片描述
在输出流结束的时候,设置结束标记
在这里插入图片描述
服务器端
在这里插入图片描述
客户端
在这里插入图片描述

2.2.1 服务端到客户端

在这里插入图片描述
服务端
在这里插入图片描述
客户端
在这里插入图片描述

3. TCP字符流编程

3.1 客户端到服务端

在这里插入图片描述
插入一个换行符,表示写入的内容结束
BufferedWriter.newLine()
字符流输出完毕后,需要手动刷新,否则数据不会进入到数据通道
BufferedWriter.flush()
客户端修改
在这里插入图片描述
服务端修改
在这里插入图片描述

3.2 服务端到客户端

客户端修改
在这里插入图片描述
服务端修改
在这里插入图片描述

4. TCP网络通信编程

在这里插入图片描述

5. netstat

netstat指令
netstat -an可以查看当前主机网络情况,包括端口监听情况和网络连接情况
netstat -an | more可以分页显示

说明
(1)Listening 表示某个端口在监听
(2)如果有一个外部程序(客户端)连接到该端口,就会显示一条连接信息
在这里插入图片描述
(3)可以输入 Ctrl + C 退出命令

(4) 当客户端连接到服务端后,客户端也是通过一个端口和服务端进行通讯的,这个端口是TCP/IP来分配的,是随机的;
在这里插入图片描述

6. UDP网络通信编程

6.1 UDP原理

●基本介绍

  1. 类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 的协议网络程序;
  2. UDP数据通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也无法确定什么时候可以抵达;
  3. DatagramPacket 对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号;
  4. UDP协议中每个数据报都给出了完整的地址信息,因此无需建立发送方和接收方的连接;

●基本流程
5. 核心的两个类/对象,DatagramSocket 和 DatagramPacket;
6. 建立发送端,接收端(没有服务端和客户端概念);
7. 发送数据前,建立数据包/报 DatagramPacket对象;
8. 调用DatagramSocket的发送,接受方法;
9. 关闭DatagramSocket;

6.2 UDP网络通信编程

在这里插入图片描述
接收端
在这里插入图片描述
发送端
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣(15.18)补9.19

15.三数之和 我以为不会太难,md不会。 其实很让我惊讶的是,双指针用了2层循环但复杂度确是O(n)。牛🐮🐮🐮🐮🐮🐮🐮🐮🐮&am…

自动控制原理笔记-结构图及其等效变换

目录 结构图: 得到系统结构图的两种方式 : 方框图画结构图: 微分方程组画结构图: 结构图等效变换规则: 结构图的化简: 小结: 结构图: 得到系统结构图的两种方式 &#xff1a…

WebMagic

1.介绍 WebMagic是一款简单灵活的爬虫框架。基于它你可以很容易的编写一个爬虫。 WebMagic由四个组件(Downloader、PageProcessor、Scheduler、Pipeline)构成,核心代码非常简单,主要是将这些组件结合并完成多线程的任务。这意味着,在WebMag…

K8S——存储ConfigMap

configMap描述信息 ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。 ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保…

hutool工具并发使用 Sftp sftp = new Sftp(sshHost, sshPort, sshUser, sshPass) 的坑

目录问题描述解决方案Sftp(sshHost, sshPort, sshUser, sshPass) 分析Sftp(Session session) 分析吐槽另外还有一坑 delFile(String filePath)问题描述 看到前人的代码中使用 Sftp sftp new Sftp(sshHost, sshPort, sshUser, sshPass) ; 来创建一个Sftp客户端,然后…

Automatic Exposure Correction of Consumer Photographs 分析

文章目录Automatic Exposure Correction of Consumer Photographs1. 图像分割2. 按灰度区域合并3. 根据细节多少和各zone相对对比度约束,求解每个zone对应的 最优zone.4. 每个zone以及对应的最有zone找到之后,可以求解多项式curve的 ϕs\phi_sϕs​ 和 ϕ…

【Flask框架】——24 创建ROM映射

创建ROM映射 ORM:Object Relationship Mapping 创建一个类,一个类对应了一个数据库中的一张表,类的数据属性对应了表中的字段名,这个类称为映射类。 根据映射类创建出一个一个的对象,每个对象对应了表中的一条实际的…

函数(6)

目录 1、函数是什么? 2、C语言中函数的分类: 1、库函数 2、自定义函数 3、函数的参数 4、函数的调用 5、练习 1、打印100~200之间的素数 2、打印100~200之间的闰年 3、写一个函数,实现一个整形有序数组的二分查找 6、函数的嵌套调…

CSDN每日一练求最小元素 C语言

题目名称:求最小元素 时间限制:1000ms内存限制:256M 题目描述 Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]). Find the minimum…

MS17-010漏洞攻击与防御(利用永恒之蓝攻击Win7系统)

任务1 利用永恒之蓝攻击Win7系统 在Kali终端中输入命令“msfconsole ”,启动Metasploit;输入命令“use auxiliary/scanner/smb/smb_ms17_010”,加载扫描模块;输入命令“set RHOSTS 192.168.0.6”,设置需要被扫描的目标…

哈希表题目:环形链表 II

文章目录题目标题和出处难度题目描述要求示例数据范围进阶解法一思路和算法代码复杂度分析解法二思路和算法证明代码复杂度分析题目 标题和出处 标题:环形链表 II 出处:142. 环形链表 II 难度 2 级 题目描述 要求 给你一个链表的头结点 head\tex…

CSDN周赛第16期-100分满分题解

前言 这是时隔两年再参加比赛了,上次参加算法竞赛还是2020年在公司1024活动的时候。当时获得了二等奖(switch套装)和一个快题奖(小米行李箱)。 这次比赛获得了满分,也还不错。题目除了二维积水的问题&…

8Manage:提高项目执行力的策略有哪些?

在项目管理中实施执行战略,将战略目标转化为商业价值的企业将发现取得成功所涉及的大团队——最高管理层、中层管理人员、项目经理和项目团队。 以下是阻碍项目成功执行的六个主要差距: ● 缺少共同的理解 ● 缺乏参与的执行赞助者 ● 与战略目标不一致…

计算机网络—Nginx概述

文章目录nginx负载均衡:例:安装配置nginx————————————————————————————————nginx负载均衡: 请求会打到nginx上面,nginx可以用作负载均衡, 例:一个网站用一台服务器不够&a…

001 软件安装与配置

1、Anaconda安装及使用 1.1 下载地址 Anaconda3-2022.10-Windows-x86_64 1.2 Anaconda创建虚拟环境 下面均在Anaconda终端中输入 查看python版本 python --version1.2.1、Anaconda创建虚拟环境 conda create -n pytorch python3.9conda create 创建虚拟环境命令 -n pytor…

解决vue代码不规范而出现的问题:Eslint修复

当我们刚创建一个vue项目,写代码时候,因为代码写的不规范会出很多问题,报很多错误,除了一个一个去修改他们,还有没有其他办法去解决他们呢? 这里介绍三种办法去统一解决: 方法一:每…

MCU-51:让LED闪烁起来

目录一、LED闪烁1.1 编写代码1.2 延时函数1.3 由0和1控制实现二、LED流水灯2.1 流水灯基础版2.2 移位法实现LED流水灯一、LED闪烁 昨天我们初识单片机,点亮了一个灯开启了我们51单片机的学习之旅。那么今天我们来一步步深入学习。 1.1 编写代码 会了点亮一个灯&a…

嵌入式分享~IO相关1 ##

这里仅总结一下IO控制相关 单片机IO直接驱动继电器 上图是随便找到的两个不同型号的继电器。继电器就是个开关,这个开关是由它内部的线圈控制的,给线圈通电,继电器就吸合,开关就动作了。绝大部分的继电器反面都会有如下图一样的…

win10 git 标准化commit工具commitizen安装教程

1、 安装nodjs https://nodejs.org/en/ 下载最新版本 安装完成后,修改环境变量 默认 nodejs是有的,需要自己添加npm路径 2、安装commitizen 在桌面上右键打开power shell 查看node 和npm的版本,npm最好升级一下 升级命令问题 npm inst…

【HDR】曝光融合(Exposure Fusion)

文章目录0 前言1 算法细节1.1 Naive1.1.1 主要思想1.1.2 权重计算1.1.3 融合1.2 Multi-resolution2 实验3 参考0 前言 在曝光融合(Exposure Fusion)算法问世之前,多曝光序列合成用于显示的HDR需要两个步骤,第一步是将多张不同曝光…