Android简易UDP通信模型
来源:互联网 发布:python爬虫教程下载 编辑:程序博客网 时间:2024/05/16 04:55
什么是Android UDP?
UDP是User Datagram Protocol的简称,中文名是用户数据包协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。它是IETF RFC 768是UDP的正式规范。在网络中它与TCP协议一样用于处理数据包。在OSI模型中,在第四层-传输层,处于IP协议的上一层。UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。
与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。
UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。
TCP和UDP在android中的使用和在Java里是完全一样的。
服务端:
package com.cheerchip.core;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.SocketException;import android.util.Log;public class UDPServer implements Runnable { private static final int PORT = 6000; private byte[] msg = new byte[1024]; private boolean life = true; public UDPServer() { } /** * @return the life */ public boolean isLife() { return life; } /** * @param life * the life to set */ public void setLife(boolean life) { this.life = life; } @Override public void run() { DatagramSocket dSocket = null; DatagramPacket dPacket = new DatagramPacket(msg, msg.length); try { dSocket = new DatagramSocket(PORT); while (life) { try { dSocket.receive(dPacket); Log.i("msg sever received", new String(dPacket.getData())); } catch (IOException e) { e.printStackTrace(); } } } catch (SocketException e) { e.printStackTrace(); } }}
客户端:
package com.cheerchip.core;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;public class UDPClient { private static final int SERVER_PORT = 6000; private DatagramSocket dSocket = null; private String msg; /** * @param msg */ public UDPClient(String msg) { super(); this.msg = msg; } /** * 发送信息到服务器 */ public String send() { StringBuilder sb = new StringBuilder(); InetAddress local = null; try { local = InetAddress.getByName("localhost"); // 本机测试 sb.append("已找到服务器,连接中...").append("/n"); } catch (UnknownHostException e) { sb.append("未找到服务器.").append("/n"); e.printStackTrace(); } try { dSocket = new DatagramSocket(); // 注意此处要先在配置文件里设置权限,否则会抛权限不足的异常 sb.append("正在连接服务器...").append("/n"); } catch (SocketException e) { e.printStackTrace(); sb.append("服务器连接失败.").append("/n"); } int msg_len = msg == null ? 0 : msg.length(); DatagramPacket dPacket = new DatagramPacket(msg.getBytes(), msg_len, local, SERVER_PORT); try { dSocket.send(dPacket); sb.append("消息发送成功!").append("/n"); } catch (IOException e) { e.printStackTrace(); sb.append("消息发送失败.").append("/n"); } dSocket.close(); return sb.toString(); }}文章摘自 Android简易UDP通信模型
- android 简易UDP通信模型
- android 简易UDP通信模型
- Android简易UDP通信模型
- TCP/UDP通信模型
- UDP通信知识介绍及简易教程
- 简易TCP与UDP编程模型
- android UDP通信
- android UDP通信
- android UDP通信问题
- android网络通信------UDP
- Android UDP通信
- android UDP通信
- Android实现UDP通信
- Android中UDP通信
- Android:Socket UDP通信
- android UDP通信
- python udp通信模型,模拟TFTP客户端
- 网络通信之简易聊天室(UDP实现)
- siginalExample.c(使用signal和sigaction函数捕捉和处理信号)
- C语言之指针小究1
- 哈希表
- 学习开发cocos2d-x 游戏 实战篇(2)之 欢迎 界面编写
- 丰富关联的文档管理软件
- Android简易UDP通信模型
- 总结一些做过的习题
- POJ 1094 Sorting It All Out (拓扑排序) - from lanshui_Yang
- solr查询参数使用说明
- 八大排序c++可运行精简版,一目了然
- 怎样成为架构师
- svn配置和应用
- CSS 相对/绝对(relative/absolute)定位系列(四)
- 子序列的个数 --- 庞果网