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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> JAVA TCP编程和UDP编程 -> 正文阅读

[网络协议]JAVA TCP编程和UDP编程

TCP连接

1.严格区分客户端和服务端。

java.net.Socket类和java.net.ServerSocket类

2. Socket类

public Socket(String host, int port)

如果指定host是null,则相当于指定地址为回送地址,一旦使用回送地址发送数据,立即返回,不进行任何网络传输。

2.1 常用方法:

public InputStream getInputStream():?

返回此套接字的输入流

public OutputStream getOutputStream()

返回此套接字的输出流

public void close()?

关闭此套接字

public void shutdownOutput()

先前写出的数据将被发送,随后终止输出流

3.ServerSocket()类

实现服务器套接字,该对象等待通过网络的请求

public ServerSocket(int port)

//将此对象绑定到指定的端口号上

3.1 常用方法

public Socket accept()

//监听并接受连接,在建立连接之前会一直阻塞]

4. URL类

4.1 基础知识

URI?统一资源定位符

URL 统一资源定位符

<传输协议>://<主机名>:<端口号>/<文件名>#片段名?参数列表

最常见的传输协议即http(超文本传送协议),其次是ftp(文件传送协议)

主机名指出万维网文档所在的主机

URN 统一资源命名?

java.net.URL

4.2 构造方法:
URL(string s)

//根据指定字符串创建URL

URL(String protocol, String host, int port, String file)

//根据指定协议名、主机名、端口号和文件名创建URL对象

URL(String protocal, String host, String file)?

//根据指定协议名、主机名和文件名创建URL

4. 3 常用方法

String getProtocol() //获取URL对象的协议名

String getHosts()? //获取对象的主机名

String getPort()? //获取对象的端口号

String getPath()? //获取对象的文件路径

String getFile()? ?// 获取对象的文件名

String getQuery()? //获取对象的查询部分

URLConnection openConnection() //返回一个URLConnection实例,表示与之连接的远程对象的URL

其中 URLConnection类中的方法:

InputStream getInputStream()? //返回从此打开的连接读取的输入流

disconnection() //断开连接

UDP连接

对于UDP,没有所谓Server和Client

java.net.DatagramSocket

//表示用于发送和接收数据报的套接字

java.net.DatagramPacket

DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)

//构造数据报包,用来将长度为length的包发送到指定主机上的指定端口号

//offset 代表偏移量

DatagramPacket(byte[] buf, int offset, int length)

//用来接收长度为length的数据包

//表示数据报的数据包

实现:将客户端的图片,通过网络上传到服务器,服务器收到后回复消息

大致流程:

//客户端:将存在磁盘的图片转为文件字节数组? -> Socket把文件字节数组上传? ->? 服务端收到文件字节数组后将其?

所用知识点:

附:HTTP知识点

1.HTTP是面向事务的应用层协议,默认端口号为80

2. HTTP本身无需连接,但在传输层上HTTP使用TCP连接保证可靠传输。

3.HTTP协议无状态,服务器不会记得之前连接过的客户。

4.浏览器请求一个文档的工作过程:

客户点击某个万维网文档的链接

HTTP协议和服务器建立TCP连接(三次握手)

在三次握手的前两部分完成后(一个RTT时间),客户把HTTP请求报文作为TCP连接的第三个报文的数据发到服务器

服务器收到HTTP请求报文把对应报文返回给客户

综上,上述过程所用时间为两个RTT(一个用于连接TCP连接,一个用于请求和接收万维网文档)加上文档传输时间。

5.代理服务器:

功能上可以理解为内存中的cache,目的是减缓源服务器的压力,降低时延。

6. HTTP的报文结构(待更)

7.Cooike

虽然HTTP是无状态的,但在其中可以使用Cookie来满足服务器记忆客户的需求

Cookie工作过程:当客户A访问一个网站的服务器时,该服务器未该客户产生一个唯一的识别码,并以此为索引在服务器后端的数据库里产生一个项目,给客户A返回的HTTP响应报文中添加Set-cookie,其值为识别码,客户A收到响应浏览器在其管理的Cookie文件中添加一行(包括服务器的主机名和识别码),之后客户A每发送一个HTTP请求报文,其浏览器就会取出此网站的识别码并放入HTTP请求报文的Cookie首部行中,这样服务器就可以识别用户,服务器能够了解的是客户访问的页面及其顺序,浏览器不会存储客户关于各网址的用户名和密码,但服务器可以通过Cokkie中存储的识别码来验证客户从而方便客户免密登录网站。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 10:15:37  更:2021-11-27 10:16:35 
 
开发: 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/26 8:29:38-

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