iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android网络编程之UDP通信模型实例
  • 260
分享到

Android网络编程之UDP通信模型实例

模型udpAndroid 2022-06-06 10:06:02 260人浏览 独家记忆
摘要

什么是Android UDP? UDP是User Datagram Protocol的简称,中文名是用户数据包协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单

什么是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() {
 }

 
 public boolean isLife() {
  return life;
 }

 
 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;

 
 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();
 }

}

主Activity:

代码如下:
public class MainAct extends Activity {

 EditText msg_et = null;
 Button send_bt = null;
 TextView info_tv = null;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  msg_et = (EditText) findViewById(R.id.msg_et);
  send_bt = (Button) findViewById(R.id.send_bt);
  info_tv = (TextView) findViewById(R.id.info_tv);

  // 开启服务器
  ExecutorService exec = Executors.newCachedThreadPool();
  UDPServer server = new UDPServer();
  exec.execute(server);

  // 发送消息
  send_bt.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    UDPClient client = new UDPClient(msg_et.getText().toString());
    info_tv.setText(client.send());
   }
  });
 }
}

注意在配置文件中要加上:

以获取相应的权限。

效果图:

LoGCat打印出来的服务器端信息:

您可能感兴趣的文章:Android使用URLConnection提交请求的实现Android HttpURLConnection.getResponseCode()错误解决方法Android 中HttpURLConnection与HttpClient使用的简单实例Android中HttpURLConnection与HttpClient的使用与封装Android中使用HttpURLConnection实现GET POST JSON数据与下载图片Android通过HttpURLConnection和HttpClient接口实现网络编程golang+Android基于HttpURLConnection实现的文件上传功能示例Android开发使用HttpURLConnection进行网络编程详解【附源码下载】android 网络编程之网络通信几种方式实例分享Android开发使用URLConnection进行网络编程详解


--结束END--

本文标题: Android网络编程之UDP通信模型实例

本文链接: https://www.lsjlt.com/news/26883.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java网络编程之UDP网络通信详解
    目录1.UDP网络通信编程原理1.1 UDP网络通信编程介绍1.2 UDP网络通信编程的基本流程2.UDP网络通信编程案例1.UDP网络通信编程原理 1.1 UDP网络通信编程介绍 ...
    99+
    2024-04-02
  • Java网络编程 - UDP通信
    文章目录 UDP通信快速入门一发一收多发多收广播组播 UDP通信 快速入门 UDP协议的特点: UDP是一种无连接、不可靠传输的协议。 将数据源IP、目的地IP和端口以及数据封装成数据包,大小限制在64KB内,直...
    99+
    2023-08-30
    java 网络 udp
  • Java实现基于UDP协议的网络通信UDP编程
    目录UDP编程通信基本介绍基本流程UDP编程通信 基本介绍 类DatagramSocket和DatagramPacket【数据包/数据报】实现了基于UDP协议网络程序。UDP数据报通...
    99+
    2023-05-17
    Java UDP编程 Java UDP网络编程
  • Python制作简易聊天器,搭建UDP网络通信模型
    目录1.导入模块2.创建一个套接字对象3.发送数据到ubuntu系统中4.发送任意数据给网络条数助手5.循环发送数据6.循环接受数据循环接收将相关的功能抽离出来做成一个函数7.启动最...
    99+
    2024-04-02
  • Java网络编程之TCP通信完整代码示例
    一、概述  Socket类是Java执行客户端TCP操作的基础类,这个类本身使用代码通过主机操作系统的本地TCP栈进行通信。Socket类的方法会建立和销毁连接,设置各种Socket选项。  ServerSocket类是Java执行服务器端...
    99+
    2023-05-30
    java tcp socket
  • Java网络编程之UDP实现原理解析
    UDP实现通信非常简单,没有服务器,每个都是客户端,每个客户端都需要一个发送端口和一个接收端口。一个客户端向另一个客户端发送消息时,需要知道对方的IP和接收端口,所用到的类为Data...
    99+
    2024-04-02
  • Java网络编程之UDP和TCP套接字
    文章目录 一. 网络编程概述二. UDP网络编程1. UDP套接字2. UDP客户端回显服务器程序2.1 UDP回显服务器2.2 UDP客户端2.3 UDP实现查词典的服务器 三. ...
    99+
    2023-09-08
    网络编程 Java Socket UDP/TCP 套接字
  • .NET网络编程——TCP通信
    一、网络编程的基本概念 : 1. 网络         就是将不同区域的电脑连接到一起,组成局域网、城域网或广域网。把分部在不同地理区域的计算机于专门的外部设备用通信线路 互联成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相...
    99+
    2023-08-31
    网络 tcp/ip 服务器 .net eclipse java
  • Java网络编程 - TCP通信
    文章目录 TCP通信快速入门(一发一收)编写客户端代码编写服务器代码 多发多收多发多收(同时接受多个客户端)线程池优化 TCP通信 快速入门(一发一收) TCP协议回顾: TCP是一种面向连接,安全、可靠的...
    99+
    2023-08-16
    网络 tcp/ip java
  • Java网络编程 - 网络编程介绍 - 网络通信三要素
    文章目录 网络编程网络编程介绍网络通信三要素要素一: IP地址IP地址基本介绍IP地址的操作类 要素二: 端口号要素三: 协议TCP协议UDP协议 网络编程 网络...
    99+
    2023-09-07
    网络 java 网络协议
  • Python如何制作简易聊天器以及搭建UDP网络通信模型
    这篇文章将为大家详细讲解有关Python如何制作简易聊天器以及搭建UDP网络通信模型,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言:互联网的本质是什么?其实就是信息的交换。就比如我们常用...
    99+
    2023-06-22
  • C++ Socket实现TCP与UDP网络编程
    目录前言TCP1). 服务器2). 客户端3). TCP聊天小项目UDP1). 服务器2). 客户端总结前言 socket编程分为TCP和UDP两个模块,其中TCP是可靠的、安全的,...
    99+
    2024-04-02
  • CocosCreator入门教程之网络通信
    网络通信概况 开发一个网络游戏,难免要处理网络通信。有几点问题需要注意: 1.服务端为了快速开发可能前期使用http通信,后面再改成websocket/socket。 2.同时存在h...
    99+
    2024-04-02
  • Python网络编程之ftplib模块
    Python中默认安装的ftplib模块定义了FTP类,可用来实现简单的ftp客户端,用于上传或下载文件。 ftp登陆连接 from ftplib import FTP # 加载f...
    99+
    2024-04-02
  • Python网络编程之xmlrpc模块
    简介 rpc:远程过程调用协议。简单的来说就是客户端可以很方便得远程调用服务端的接口程序,而不用管底层是如何实现的。 XML-RPC的全称是XML Remote Procedure ...
    99+
    2024-04-02
  • Python LeetCode HTTP 教程:如何通过编程实现网络通信?
    Python作为一门强大的编程语言,不仅可以完成各种数据处理任务,还可以通过编写网络通信程序来实现网络通信。在本文中,我们将介绍如何使用Python编写HTTP请求程序,并通过LeetCode上的题目来加深理解。 HTTP是一种在Web上...
    99+
    2023-09-19
    leetcode http 教程
  • 怎么在python中利用UDP编程实现通信
    今天就跟大家聊聊有关怎么在python中利用UDP编程实现通信,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、...
    99+
    2023-06-14
  • 初学Android之网络封装实例
    前言: 模拟用户登录,从安卓发送请求到服务端校验,再从服务端返回给安卓校验结果 1.在AndroidManifest.xml文件中添加网络权限 <uses-permissi...
    99+
    2024-04-02
  • Java网络编程UDP实现多线程在线聊天
    本文实例为大家分享了Java实现多线程在线聊天的具体代码,供大家参考,具体内容如下 上一篇博客通过UDP实现了聊天,但只能单方面发送消息,这次实现了多线程在线聊天,也就是可以双方互发...
    99+
    2024-04-02
  • 【Linux网络】网络编程套接字 -- 基于socket实现一个简单UDP网络程序
    认识端口号网络字节序处理字节序函数 htonl、htons、ntohl、ntohs socketsocket编程接口sockaddr结构结尾实现UDP程序的socket接口使用解析so...
    99+
    2023-09-01
    网络 linux udp socket
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作