`

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实例;



,

分享到:
评论

相关推荐

    入门必备Java学习笔记

    `java.net` 包支持网络编程,包括TCP和UDP通信;`java.util` 包则包含了集合框架、日期时间处理等实用工具类。 Javalang是Java语言的核心包,它定义了基本的数据类型、控制流程、异常处理和类库的访问机制。例如,`...

    Android程序研发源码Android 局域网简易云端笔记系统源码.rar

    2. **Android网络编程**:为了实现局域网内的通信,开发者需要理解Android的Socket编程,使用`java.net.Socket`和`ServerSocket`类建立TCP连接。此外,HTTP或HTTPS协议也可能用于数据传输,如使用`HttpURLConnection...

    java实现笔记本电脑设置成WiFi热点

    在Java中,网络编程主要依赖于`java.net`和`java.nio`这两个包。理解Socket通信、ServerSocket、URL以及HttpURLConnection等类是必要的。它们用于建立网络连接、发送和接收数据。 2. **操作系统接口调用**: 创建...

    java面向对象和第一章整理笔记

    - 应用领域:两者在Web开发、企业级应用、移动应用等方面都有应用,但Java在Android开发中占据主导地位,而.NET在Windows生态系统中更常见。 3. **面向对象编程(OOP)基础**: - **类与对象**:类是对象的蓝图,...

    Android学习笔记

    【Android 学习笔记】初学者入门指南 在学习Android开发的过程中,首先需要搭建一个完整的开发环境。在Windows操作系统上,以下步骤可以帮助你快速构建起一个功能完备的Android开发环境。 1. 安装JDK (Java ...

    java课程学习笔记

    ### Java课程学习笔记 #### 一、计算机基础知识 ##### 1. 计算机概述 - **计算机定义**:一种能够根据预设的程序自动、高效地处理大量数据的智能化电子设备。它由硬件和软件两大部分组成。硬件主要包括运算器、...

    techpackage.net-Mini音乐播放器.rar

    它将利用Android SDK(软件开发工具包)进行开发,包括使用Java或Kotlin编程语言,并且需要理解Android的多媒体框架如MediaPlayer或ExoPlayer,以及如何处理网络请求,比如使用OkHttp或Retrofit库来实现数据的获取和...

    物联网技能赛笔记+源码【智能空调遥控器、智能保险箱】

    开发者需要掌握Java或Kotlin语言,理解Android SDK、布局设计、网络通信API(如HTTP或WebSocket)以及传感器数据处理。 2. **嵌入式开发**:嵌入式系统是物联网的核心,它们负责在硬件层面执行特定任务。这里提到的...

    xamarin学习笔记A01上(android环境的安装)

    总的来说,Xamarin的学习和实践涉及到C#编程、Android开发原理以及Xamarin平台的特性和API。本笔记A01上主要介绍了环境的搭建,后续章节将逐步深入到Xamarin.Forms、布局设计、事件处理、数据持久化、网络通信等方面...

    java学习计划

    - **社区与论坛**:Stack Overflow、GitHub、Java.net等社区可以找到丰富的技术文章、示例代码和问答,是解决编程问题和提升技能的好地方。 #### 实践项目 理论学习之后,通过实践项目巩固和深化理解。以下是一些...

    Http通信与Socket通信_笔记[文].pdf

    在Android中,通过`java.net.Socket`类实现TCP通信。 - **UDP(User Datagram Protocol)** 是一种无连接的服务,速度快但不保证数据的顺序和完整性。通过`java.net.DatagramSocket`和`java.net.DatagramPacket`...

    C#开发Android 手机多功能记事本完整源码(使用Mono技术基于vs2010开发)

    Xamarin.Android将.NET与Android SDK集成,允许开发者访问所有Android API,并且能直接调用Java库。 4. **Visual Studio 2010**:尽管Visual Studio主要是为Windows应用设计的,但通过安装Xamarin插件,它可以用于...

    wifimanagerapidemo.zip

    【标签】虽然没有提供具体的标签,但我们可以根据标题和描述推测,相关的标签可能包括:Android开发、WiFi管理、API示例、编程、网络连接、示例代码等。 【压缩包子文件的文件名称列表】: 1. **WiFiManagerTools....

    JAVA知识点

    4. **java.net**: 支持网络编程的功能。 5. **java.util**: 包含了许多实用工具类,如集合框架、日期时间操作等。 ### 注释与标识符 1. **注释**: - 单行注释 `//`: 用于快速添加一行注释。 - 多行注释 `/* */`...

    notes:我的笔记

    Java的`java.net`包提供了进行网络编程的类和接口,如Socket和ServerSocket,可用于创建客户端和服务器应用程序。 10. **反射机制** Java反射API允许在运行时检查类、接口、字段和方法的信息,甚至能够动态调用...

    Xamarin2014 安卓 4.12--iosVS 1.10.39.0

    1. **跨平台开发**:Xamarin允许开发者使用相同的编程语言和API在不同平台上创建应用,减少重复工作。 2. **原生应用**:Xamarin编译的代码是原生的,因此生成的应用与使用Java或Swift编写的原生应用在性能上无明显...

    记事本源程序

    在"记事本源程序"的情况下,这些源代码可能由Java编写,因为Android操作系统主要支持Java作为开发语言。当然,现代Android开发也可能使用Kotlin,这是一种在Android社区中越来越受欢迎的编程语言。 描述中提到...

    MTK开发文档

    "jb51.net.txt"可能是一个链接或笔记,指向更多学习资源。"电子书大全.url"和"PDF阅读器下载.url"可能提供了更多的阅读材料和PDF阅读工具,帮助读者更好地消化和理解开发文档。"脚本之家.url"可能是一个开发者社区,...

    行业分类-设备装置-多平台移动装置和其它计算装置以及方法.zip

    这包括使用Java、C#(通过.NET框架)或者JavaScript(通过Electron等框架)等语言进行开发。此外,还有一些专为移动平台设计的跨平台解决方案,如Xamarin(C#)、React Native(JavaScript)和Flutter(Dart)。 6....

    简单的便签

    云端存储则涉及API接口,如通过云服务提供商(如Google Drive或Dropbox)实现同步。 3. **搜索功能**:为了方便用户查找特定的便签,应用通常会提供搜索功能,根据关键字搜索便签内容。 4. **分类和标签**:为了更...

Global site tag (gtag.js) - Google Analytics