【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api

Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常;


-- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常);


-- Android包 : android.net 包 (1接口, 19类, 3枚举, 1异常), android.net.http 包 (6类), android.net.nsd 包 (3接口, 2类), android.net.rtp (4类), android.net.sip 包 (1接口, 9类, 1异常), android.net.wifi 包 (16类, 1枚举), android.net.wifi.p2p 包 (9接口, 7类), android.net.wifi.p2p.nsd 包 (6类);








ContentHandlerFactory : 该接口定义内容处理程序工厂;


DatagramSocketImplFactory : 该接口定义用户数据报实现工厂;


FileNameMap : 定义了 文件名 和 MIME Type 字符串之间的映射 机制 的接口;


SocketImplFactory : 定义 套接字 实现 工厂;


SocketOptions : 定义 获取 设置 套接字选项的 方法 的接口;


URLStreamHandlerFactory : 定义 URL 流协议处理程序 工厂;




1. ContentHandlerFactory





作用 : 定义内容处理程序工厂, 该接口的实现类 负责 将 MIME 类型映射到 ContentHandler 实例对象中;




MIME 解析 :


-- 扩展名 : Multipurpose Internet Mail Extentions 多用途互联网邮件扩展类型;


-- 作用 : 设定 A 扩展名的文件 使用 B 程序打开, 当 A 扩展名文件被访问到的时候, 浏览器会自动 调用 B 程序打开这个 A 扩展名文件;


-- 使用形式 : 多用于关联 自定义的文件后缀文件打开方式 和 媒体文件打开方式;




接口使用环境 : URLStreamHandler 使用此接口实现的方法 创建 MIME Type 的 ContentHandler;






接口方法解析 :



ContentHandler createContentHandler(String mimetype)

-- 作用 : 创建 新的ContentHandler, 该 ContentHandler 可以从 URLStreamHandler 中读取对象;



2. DatagramSocketImplFactory



作用 : 定义用于数据包套接字实现的工厂;




接口使用环境 : DatagramSocket 使用该接口的方法 创建 套接字实例;




接口方法解析 :



DatagramSocketImpl createDatagramSocketImpl()

-- 作用 : 创建 DatagramSocketImpl 实例对象;



3. FileNameMap



作用 : 文件名称 与 MIME Type 字符串 之间的映射 所需的接口;




接口方法解析 :



String getContentTypeFor(String fileName)

-- 作用 : 获取指定文件名的 MIME Type 字符串;



4. SocketImplFactory



作用 : 用于定义套接字实现工厂;




使用环境 : Socket 和 ServerSocket 使用该接口定义的方法 来创建套接字实例;




方法解析 :



SocketImpl createSocketImpl()

-- 作用 : 创建新的套接字实例;



5. SocketOptions



作用 : 定义了 设置 获取 套接字 选项的方法;




接口使用环境 : SocketImpl 和 DatagramSocketImpl 实现了该接口, 这两个类的子类应该重写该接口, 用以支持两个类的子类的选项;






(1) 常量字段解析  



IP_MULTICAST_IF : 设置一个用于发送多播包的传出接口(eth0, eth1, wlan0 等);


-- 使用环境 : 可以在具有多个网络接口的主机上使用, 一般这种情况下应用程序 不使用系统默认的接口, 而使用其它接口;




IP多播 : 一台主机 (多播源) 同时发送 同一数据到多台主机;




IP-MULTICAST_IF2 : 与 IP_MULTICAST_IF 作用相同, 但是添加了 对 IPv4 IPv6 的支持, 该常量从 1.4 版本 开始支持;




IF_MULTICAST_LOOP : 用于 启动 或 禁用 多播数据报会送, 默认状态是启动;




IP_TOS : 在 IP 地址头 中设置 TCP UDP 数据报的 服务类型 或者 流量字段;




TOS (Type Of Service) : 在网络中区分包的优先级, 单字节, 下面是常用的常量 服务类型;


-- IPTOS_LOWDELAY : 延迟最小化;


-- IPTOS_THROUGHPUT : 优化吞吐量;


-- IPTOS_RELIABILITY : 可靠性优化;


-- IPTOS_MINCOST : 填充数据, 这些数据可以低速传送, 无关紧要;




SO_BINDADDR : 获取绑定套接字的本地地址;


-- 套接字本地地址不可更改 : 套接字在创建的时候绑定本地地址, 因此不可更改;


-- 套接字默认地址 : INADDR_ANY 表示 多穴主机 (有多个IP地址的主机) 的任何地址;




SO_REUSEADDR : 仅用于 MulticastSocket, 默认情况下MulticastSocket 设置了该选项, 对 DatagramSocketImpl 有效;




SO_BROADCAST : 启动 禁用 发送广播消息的 处理能力;


-- 使用场景 : 数据报套接字, 支持广播消息概念的网络;


-- 默认设置 : DatagramSocket 默认启动该选项;




SO_KEEPALIVE : TCP 套接字设置了该选项, 2小时内 没有通过 Socket 传输数据, TCP 会将 keepalive 探头 发送到同为体中;


-- 作用 : 检测同位体主机是否崩溃;


-- 适用情况 : 仅对 TCP 套接字有效;


-- 同位体通过期待的ACK响应 : 不通知应用程序, 在另外2小时 没有数据传输之后, TCP 继续发送一个探头;


-- 同位体通过 RST 响应 : 通知本地 TCP 同位体主机 崩溃, 关闭socket 重启主机;


-- 同位体无响应 : 直接关闭套接字;




SO_LINGER : 关闭逗留的超时值, 即 在 TCP Socket 执行 close 之后, 等待的时间;


-- 启用 非0 超时值 : close() 之后, 在传输 和 确认读写完毕之前 一直阻塞, 如果超时就会 通过 TCP RST 强制关闭;


-- 启用 0 超时值 : close() 之后会强制关闭, 不会进行任何等待;




SO_OOBINLINE : 是否丢弃 socket 接收的 tcp 紧急数据;


-- 启动选项 : socket 接收的 tcp 紧急数据 都通过 socket 输入流接收;


-- 禁用选项 : 接收的 tcp 紧急数据 直接丢弃;




SO_RCVBUF (receive) : 设置 网络 输入 的缓冲区大小;



-- 设置方法使用 : 设置通过套接字 接收数据 时使用的缓冲区的大小;


-- 获取方法使用 : 获取套接字设置的 接收数据 缓冲区大小;


-- 适用情况 : SocketImpl , DatagramSocketImpl;






SO_SNDBUF (send): 设置 网络 输出 的 用到的基础的IO缓冲区大小提示;


-- 设置方法使用 : 设置通过套接字 发送数据 时使用的缓冲区的大小;


-- 获取方法使用 : 获取套接字设置的 发送数据 缓冲区大小;


-- 适用情况 : SocketImpl , DatagramSocketImpl;




SO_TIMEOUT : 设置 Socket 阻塞的 超时值;


-- 超时的操作 : ServerSocket.accept(), SocketInputStream.read(), DatagramSocket.receive();


-- 设置时机 : 该选项必须在进入阻塞前设置才有效, 如果是阻塞的状态, 设置将不会对本次阻塞生效;


-- 超时处理 : 如果出现超时, 阻塞会继续执行, 但是会引发 InterruptedIOException 异常, Socket 不会关闭;


-- 适用情况 : 该设置对所有的套接字 ( SocketImpl, DatagramSocketImpl ) 有效;




TCP_NODELAY : 设置该参数的链接禁用 nagle 算法;




Nagle算法解析 : 减少发包个数, 用于增加网络软件的效率, 避免 一个包只有 1字节, 却使用了 40个字节的头文件的情况;






(2) 接口方法详解



void setOption(int optID, Object value) throws SocketException

-- 作用 : 启用 / 禁用 指定选项, 如果启用, 将会采用 value 选项;

-- 选项传入错误 : 如果传入的 value 格式不正确, 会发生错误;


-- 传入基本数据类型 : 使用 Integer Boolean 等封装;


-- 禁用选项 : 传入 new Boolean(false) 可以禁用任何选项, 如果传入其它内容 都会启用该选项;


-- 异常 : 如果选项匹配错误, 或者 socket 关闭 等错误, 就会报出 SocketException 异常;




Object getOption(int optID) throws SocketException

-- 作用 : 获取选项的值;





6. URLStreamHandlerFactory



接口作用 : 定义了 URL 流协议处理程序的工厂, URL 类实现该接口 为特定的协议创建 URLStreamHandler;




createURLStreamHandler URLStreamHandler createURLStreamHandler(String protocol)

-- 作用 : 创建具有指定协议的新的 URLStreamHandler实例;


目录
相关文章
|
2月前
|
机器人 API Python
智能对话机器人(通义版)会话接口API使用Quick Start
本文主要演示了如何使用python脚本快速调用智能对话机器人API接口,在参数获取的部分给出了具体的获取位置截图,这部分容易出错,第一次使用务必仔细参考接入参数获取的位置。
123 1
|
13天前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
55 6
|
2月前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
2月前
|
JavaScript 前端开发 Java
FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
IT寒冬使APP开发门槛提升,安卓程序员需转型。选项包括:深化Android开发,跟进Google新技术如Kotlin、Jetpack、Flutter及Compose;研究Android底层框架,掌握AOSP;转型Java后端开发,学习Spring Boot等框架;拓展大前端技能,掌握JavaScript、Node.js、Vue.js及特定框架如微信小程序、HarmonyOS;或转向C/C++底层开发,通过音视频项目如FFmpeg积累经验。每条路径都有相应的书籍和技术栈推荐,助你顺利过渡。
45 3
FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
|
2月前
|
SQL 安全 API
数字堡垒之下:网络安全漏洞、加密技术与安全意识的博弈探索RESTful API设计的最佳实践
【8月更文挑战第27天】在数字化浪潮中,网络安全成为守护个人隐私与企业资产的关键防线。本文深入探讨了网络漏洞的成因与影响,分析了加密技术如何为数据保驾护航,并强调了提升公众的安全意识对于构建坚固的信息防御系统的重要性。文章旨在为读者提供一场思维的盛宴,启发更多关于如何在日益复杂的网络世界中保护自己的思考。
|
2月前
|
SQL 存储 数据处理
|
2月前
|
XML JSON API
RESTful API设计最佳实践:构建高效、可扩展的接口
【8月更文挑战第17天】RESTful API设计是一个涉及多方面因素的复杂过程。通过遵循上述最佳实践,开发者可以构建出更加高效、可扩展、易于维护的API。然而,值得注意的是,最佳实践并非一成不变,随着技术的发展和业务需求的变化,可能需要不断调整和优化API设计。因此,保持对新技术和最佳实践的关注,是成为一名优秀API设计师的关键。
|
2月前
|
监控 API 数据安全/隐私保护
​邮件API触发式接口分析?邮件API接口好评榜
邮件API在企业通信和营销中至关重要,通过自动化邮件发送流程提升效率与客户满意度。本文解析邮件API触发式接口,即基于特定事件(如用户注册、购买产品)自动发送邮件的技术,能显著加快企业响应速度并增强用户体验。推荐市场上的优秀邮件API产品,包括SendGrid、Mailgun、Amazon SES、Postmark及新兴的AOKSend,它们各具特色,如高发送率、详细分析工具、灵活配置、强大的日志功能及用户友好的API接口,帮助企业根据不同需求选择最合适的邮件API解决方案。
|
2月前
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
60 8
|
2月前
|
机器学习/深度学习 API 算法框架/工具
【Tensorflow+keras】Keras API三种搭建神经网络的方式及以mnist举例实现
使用Keras API构建神经网络的三种方法:使用Sequential模型、使用函数式API以及通过继承Model类来自定义模型,并提供了基于MNIST数据集的示例代码。
44 12
下一篇
无影云桌面