Android 开发 TCP协议

本文介绍了Android开发中TCP协议的应用,包括网络分层、端口号的使用、客户端与服务端结构、TCP协议的特性如面向连接、全双工通信和可靠性。还探讨了TCP与Socket的关系以及TCP三次握手的过程。同时,对比了TCP与HTTP的工作方式,并提供了基本的TCP Socket使用示例。
1.网络分层

网络分为5层:

  • 应用层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

其中:

网络层:是根据提供的ip地址端口号,找到对应的主机和应用;

传输层:通过端口号将数据传输到主机的进程,来实现进程之间的通讯的;

2.端口号:

  • 0~1023:分配给系统进程之间使用的,普通应用不能使用;
  • 1024~49151:登记端口主要让第三应用使用的
  • 49152~65535:短暂端口号,是留给客户选择暂时使用的,一个进程使用完可以供其他进程使用;

也就是说TCP能使用的端口号为1024~65535;

3.客户端和服务端结构(client & server)

  • 定义:即客户端/服务器结构,是软件系统体系结构
  • 作用:充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。 

    Socket正是使用这种结构建立连接的,一个套接字接客户端,一个套接字接服务器。

  • Socket架构

### Android 开发TCP/IP 协议的使用方法 在 Android 应用程序开发过程中,TCP/IP 是一种常见的通信方式,用于客户端和服务端之间的可靠数据传输。以下是关于如何在 Android 中实现基于 TCP 的网络编程的具体说明。 #### 1. 基础概念回顾 TCP/IP 并不是单一的一个协议,而是由多个子协议组成的协议簇[^2]。其中,TCP 提供了一种面向连接的服务,在数据传输前需要完成三次握手过程来建立稳定可靠的连接[^4]。这使得它非常适合于需要高可靠性场景的应用,比如文件上传下载、即时消息传递等。 #### 2. 客户端与服务器架构设计 在一个典型的 Android 应用中,通常会采用 C/S 架构(Client/Server),即应用程序作为客户端向远程服务器发起请求并接收响应。这种模式下,Android 设备扮演的是客户端角色,负责主动创建套接字(Socket),并通过该对象读写流中的数据[^3]。 #### 3. 编程接口介绍 Java 和 Kotlin 都提供了丰富的类库支持 Socket 编程,这些工具可以直接应用于 Android 环境之中: - **Socket 类**: 主要用来表示一个特定主机上的某个端口所代表的服务终端点。 - **ServerSocket 类**: 负责监听来自其他机器上客户的连接尝试,并返回一个新的 Socket 实例给每一个成功连入者。 下面给出一段简单的代码示例展示如何构建基本的 TCP 客户端逻辑: ```java import java.io.*; import java.net.*; public class TcpClient { public static void main(String[] args) throws IOException { String serverAddress = "localhost"; // 替换为目标服务器的实际地址 int portNumber = 8080; // 设置目标服务器开放的端口号 try (Socket socket = new Socket(serverAddress, portNumber); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) { out.println("Hello from client!"); // 向服务器发送问候语句 System.out.println(in.readLine()); // 打印从服务器收到的消息 } } } ``` 上述例子展示了怎样通过 Java 创建一个基础版的 TCP 客户端应用[^1]。注意实际项目可能还需要考虑异常处理机制以及多线程管理等问题。 #### 4. 多线程处理 由于网络操作属于耗时任务,因此不应将其放在主线程执行以免阻塞 UI 更新。推荐做法是在单独的工作线程或者 AsyncTask 当中运行所有的 IO 操作[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值