IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络编程&TCPUDP -> 正文阅读

[网络协议]网络编程&TCPUDP

网络编程

网络三要素:

  • ip:每台计算机的标识号
  • 端口:设备中应用程序的标识号
  • 协议:连接和通信的规则(UDP&TCP)

在这里插入图片描述

InetAddress类

此类表示Internet协议(IP)地址

方法名说明
static InetAddress getByName(String host)确定主机名称的IP地址。主机名称可以是及其名称,也可以是IP地址
String getHostName()获取此IP地址的主机名
String getHostAddress()返回文本显示中的IP地址字符串

UDP

发送数据

不可靠的网络协议。通信的两端各建立一个Socket对象,但只是发送、接收数据的对象。对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念。
Java提供DatagramSocket类作为基于UDP协议的Socket
构造方法:

方法名说明
DatagramSocket()创建数据报套接字并将其绑定到本机地址上的任何可用端口
DatagramPacket(byte[] buf,int len,InetAddress add,int port)创建数据报包,发送长度为len的数据报到指定主机的指定端口

相关方法:

方法名说明
void send(DatagramPacket p)发送数据报包
void close()关闭数据报套接字
void receive(DatagramPacket p)从此套接字接受数据报包

发送数据的步骤:

  • 创建发送端的Socket对象
  • 创建数据并将其打包
  • 调用DatagramSocket对象的方法发送数据
  • 关闭发送端

接收数据

步骤:

  • 创建接收端的Socket对象
  • 创建一个数据包用于接受数据
  • 调用对象的方法接收数据
  • 解析数据包,并把数据在控制台显示
  • 关闭接收端

构造方法:

方法名说明
DatagramPacket(byte[] buf,int len)创建一个DatagramSocket用于接收长度为len的数据包

相关方法:

方法名说明
byte[] getData()返回数据缓冲区
int getLength()返回要发送的数据的长度或者接收数据的长度

TCP

发送数据

使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信
Java为客户端提供了Socket类,为服务器提供了ServerSocket类

构造方法:

方法名说明
Socket(InetAddress address , int port)创建流套接字并将其连接到指定IP指定端口号
Socket(String host,int port)创建流套接字并将其连接到指定主机上的指定端口号

相关方法:

方法名说明
InputStream getInputStream()返回此套接字的输入流
OutputStream getOutputStream()返回此套接字的输出流

接收数据

构造方法:

方法名说明
ServletSocket(int port)创建绑定到指定端口的服务器套接字

相关方法:

方法名说明
Socket accept()监听要连接到此的套接字并接受它

UDP和TCP的区别

TCP客户端发送

内存往网络写数据
通过三次挥手保证连接的可靠
关流的时候,多了往服务器写入结束标记的动作
最后一步断开连接,通过四次挥手协议保证连接终止

三次握手

客户端确保服务器端建立连接

四次挥手

为了让服务端有时间处理最后的数据

结束标记

Socket.shutdownOutput:仅关闭流,写一个结束标记
相关方法:

方法名说明
void shutdownInput()将此套接字的输入流放置在“流的末尾”
void shutdownOutput()禁止用此套接字的输出流

优化

服务器端接收到一张图片就关闭程序或接收到的下一张图片会覆盖上一张图片或无法同时跟多个客户端进行通信

UUID

设定唯一标识

UUID.randomUUID()方法生成随机的文件名

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-07-05 23:42:56  更:2022-07-05 23:43:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:46:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码