Android 高级网络编程技术实践----基于 Socket 的网络通信
网络 androidsocket 编程 layoutservice
Socket(套接字)是一种通信机制,可以实现单机或跨网络进行通信,其创建
需要明确的区分 C(客户端)/S(服务器端),支持多个客户端连接到同一个服务器。有两
种传输模式:
1)、面向连接的传输:基于 TCP 协议,可靠性高,但效率低;
2)、面向无连接的传输:基于 UDP 协议,可靠性低,但效率高;
Android 中,直接采用 Socket 通信应该是我们遇到的最低级的网络运用。尽管
已经作了很大程度的抽象,但是纯粹的 Socket 通信,仍然给开发者留下很多细节需要处理,
尤其在服务器端,开发者需要处理多线程以及数据缓冲等的设计问题。相对而言,处于更高
抽象层的 HTTP 等,已经对 Socket 通信中需要处理的技术细节进行了很好的封装,开发者无
须关心,因此,HTTP 在网络开发中通常具有决定性的优势。
Android 在其核心库的 java 包中,提供了用于客户端的 Socket class 和用于服务
器端的 ServerSocket class,分别位于$SOURCE/libcore/luni/src/main/java/java/net/Socket.java
和$SOURCE/libcore/luni/src/main/java/java/net/ServerSocket.java 文件中。分析两个 class 的源
码,可以看出封装考虑的很全面,只构造方法一向每个 class 都考虑了很多种使用情况。由
于本人只是初学者,很多理解的不深入,这里只抛砖引玉的对两个 class 的构造方法分别介
绍一种,就是我下面的程序中用到的:
Socket(String dstName, int dstPort):创建一个以流的方式(基于 TCP 协议)连接到目标
机(这里可以理解为服务器)的客户端 Socket;dstName 是目标机的 IP 地址,dstPort 是要
连接的目标机的端 口号。这里要注意对端口的理解,它不能理解为物理上的一个接口,而
是对计算机中一块特殊内存区域的形象表述。
ServerSocket(int aport):创建一个绑定到本机指定端口的服务端 Socket;aport 就是指定
的本机端口。与上述客户端 Socket 对应,通过 TCP 连接时,ServerSocket 创建后需要在 aport
端口上进行监听,等待客户端的连接。
上面所写都是些背景知识,下面对本人的编程实践进行详细说明。
1、功能描述
评论0
最新资源