• 【Android 应用开发】Android 网络编程 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实例;



    ,

  • 相关阅读:
    判断是否为数字
    viewPage
    向左对齐的Gallery
    QQ登入(6)腾讯微博-获取微博用户信息,发送微博
    QQ登入(5)获取空间相册,新建相册,上传图片到空间相册
    QQ登入(4)QQ分享-内容转载
    QQ登入(3)QQ空间分享-无需登入
    Codeforces Round #210
    zoj 3716
    Codeforces Round #209 (Div. 2)
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6743647.html
Copyright © 2020-2023  润新知