【转】Android 实现联网(四)——TCP/UDP

java.net漫游 篇幅 中,我们详细介绍了与网络相关的基础类,本篇幅我们详细介绍TCP、UDP,以及如何在Android 实现联网中使用TCP、UDP协议。

TCP(Transmission Control Protocol:传输控制协议)

TCP模型结构图,如下图所示:

TCP-M

服务器端与客户端的交互图,如下图所示:

TCP-Seq

对上图,解释如下

  • 服务器程序编写
  1. 调用ServerSocket(int port)创建一个服务器套接字,并绑定到指定端口上;
  2. 调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字;
  3. 调用Socket类的getOutputStream()和getInputStream()获取输出和输入流,开始网络数据的发送和接收;
  4. 最后关闭通信套接字。
  • 客户端程序编写
  1. 调用Socket()创建一个流套接字,并连接到服务器端;
  2. 调用Socket类的getOutputStream()和getInputStream()获取输出和输入流,开始网络数据的发送和接收;
  3. 关闭通信套接字。

具体如何使用的例子,相信大家已经看了很多了,在这里就不详细说明了。

UDP (User DataPram Protocol:用户数据报协议)

UDP模型结构图,如下图所示:

UDP-M

服务器端与客户端的交互图,如下图所示:

UDP-Sep

对上图,解释如下:

  • 接收端程序编写:
  1. 调用DatagramSocket (int port)创建一个数据报套接字,并绑定到指定端口上;
  2. 调用DatagramPacket(byte[] buf,int length),建立一个字节数组以接收UDP包;
  3. 调用DatagramSocket类的receive(),接受UDP包;
  4. 最后关闭数据报套接字。
  • 发送端程序编写:
  1. 调用DatagramSocket()创建一个数据包套接字;
  2. 调用DatagramPacket(byte[] buf,int offset,int length,InetAddress address,int port),建立要发送的UDP包;
  3. 调用DatagramSocket类的send()发送UDP包;
  4. 最后关闭数据报套接字。

下面举个具体的例子,通过send()/recv()分别实现数据报的发送与接受,如下图所示:

Download-code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值