源代码:

MainActivity.java

package com.example.udp;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;import android.os.Bundle;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.os.Handler;public class MainActivity extends Activity implementsandroid.view.View.OnClickListener {public static final String SERVERIP = "127.0.0.1"; public static final int SERVERPORT = 4444;public TextView text1;public EditText input;public Button btn;public boolean start;public Handler Handler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);text1 = (TextView) findViewById(R.id.textView1);input = (EditText) findViewById(R.id.editText1);btn = (Button) findViewById(R.id.button1);btn.setOnClickListener(this);start = false;new Thread(new Server()).start();try {Thread.sleep(500);} catch (InterruptedException e) {}new Thread(new Client()).start();Handler = new Handler() {@Overridepublic void handleMessage(Message msg) {String text = (String) msg.obj;text1.append(text);}};}public class Client implements Runnable {@Overridepublic void run() {while (start == false) {}try {Thread.sleep(500);} catch (InterruptedException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}try {InetAddress serverAddr = InetAddress.getByName(SERVERIP);updatetrack("Client: Start connecting\n");DatagramSocket socket = new DatagramSocket();byte[] buf;if (!input.getText().toString().isEmpty()) {buf = input.getText().toString().getBytes();} else {buf = ("Default message").getBytes();}DatagramPacket packet = new DatagramPacket(buf, buf.length,serverAddr, SERVERPORT);updatetrack("Client: Sending ‘" + new String(buf) + "’\n");socket.send(packet);updatetrack("Client: Message sent\n");updatetrack("Client: Succeed!\n");} catch (Exception e) {updatetrack("Client: Error!\n");}}}public class Server implements Runnable {@Overridepublic void run() {while (start == false) {}try {InetAddress serverAddr = InetAddress.getByName(SERVERIP);updatetrack("\nServer: Start connecting\n");DatagramSocket socket = new DatagramSocket(SERVERPORT,serverAddr);byte[] buf = new byte[17];DatagramPacket packet = new DatagramPacket(buf, buf.length);updatetrack("Server: Receiving\n");socket.receive(packet);updatetrack("Server: Message received: ‘"+ new String(packet.getData()) + "’\n");updatetrack("Server: Succeed!\n");} catch (Exception e) {updatetrack("Server: Error!\n");}}}public void updatetrack(String s) {Message msg = new Message();String textTochange = s;msg.obj = textTochange;Handler.sendMessage(msg);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(v.getId()==R.id.button1)start = true;}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" ><EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" ><requestFocus />
</EditText><Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Send" /><TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Communication History:" android:textAppearance="?android:attr/textAppearanceLarge" /></LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.udp"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="16" /><uses-permission android:name="android.permission.INTERNET" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.udp.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

android UDP通信相关推荐

  1. 【Android开发—智能家居系列】(四):UDP通信发送指令

    思路回顾 [1]手机连接WIFI模块 [2]UDP通信对WIFI模块发送指令,以和WIFI模块保持连接状态 [3]UDP通信对WIFI模块发送指令,让其搜索可用的无线网,返回WIFI列表 [4]发送指 ...

  2. Android开发使用ServerSocket ServerSocketChannel DatagramSocket进行TCP UDP通信 实现服务器与APP消息推送

    前言 在日常开发中采用Http协议进行数据传输的情况非常多,但这都是APP主动请求服务端,将数据传到服务器或者从服务器下载数据:那么如果我们想服务器主动联系我们或者我们频繁的上报消息给服务器,怎么弄呢 ...

  3. android udp 广播通信,Android开启热点进行UDP通信中的坑

    1.写在前面: 2018年的第一篇文章,最近在使用UDP协议进行硬件通信,大家都知道UDP协议通信必须在同一个局域网内,但是每个用户家的wifi都是不一样的,硬件设备是无法只值连接到用户家的wifi的 ...

  4. wifi udp android,Android开启热点进行UDP通信中的坑

    1.写在前面: 2018年的第一篇文章,最近在使用UDP协议进行硬件通信,大家都知道UDP协议通信必须在同一个局域网内,但是每个用户家的wifi都是不一样的,硬件设备是无法只值连接到用户家的wifi的 ...

  5. Android Wifi连接控制、TCP、UDP通信,6.0以上适配

    本文章包含内容 Wifi连接控制.Wifi广播接收,适配了Android6.0以上的版本 Wifi下的TCP通信 Wifi下的UDP通信 Github项目地址 码云项目地址 最近公司要开发智能家居,A ...

  6. UDP通信,看我如何一步一步攻克面试官

    2.网络编程三要素 (1)IP IP即互联网协议(Internet Protocol).每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址. IP是每个设备在网络中的唯一标识 ...

  7. Android P2P 通信方案探索

    最近研究起了P2P网络,p2p网络其它很早就有了,但是用到的地方不多,以前最多用来p2p种子下载音乐视频这类的应用,对它的原理也一知半解,以p2p下载视频为例,大概原理:服务器里并不保存视频资源,只是 ...

  8. android传递socket对象,Android Socket通信详解

    一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时 ...

  9. Android Socket通信(五) -- 实现一个多人聊天室

    系列文章: Android Socket 系列更新计划 Android Socket通信(一) – 初识与相遇 Android Socket通信(二) --UDP,单播,广播和多播(组播) Andro ...

最新文章

  1. 学习canvas 过程中的几点总结
  2. sklearn之svm-葡萄酒质量预测(2)
  3. 记一次使用 Lombok 翻车造成的事故!
  4. 解决 锁定文件失败 打不开磁盘“D:\ubuntu\Ubuntu 64 位.vmdk”或它所依赖的某个快照磁盘。 模块 Disk”启动失败...
  5. VHDL设计四位二进制加法器和乘法器
  6. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
  7. linux php 扩展包 下载地址
  8. python在字典中插入新的数据_Python数据类型之字典dict
  9. 2019年最新淘宝联盟淘宝客升高佣规则
  10. 程序员容易的疾病之干眼症(治疗篇)
  11. “智能营销新图景”梅花网大展华院数据主题演讲
  12. python列表(list)
  13. 美团配送php,PHP对接美团配送接口遇到的坑
  14. 关于ELF格式文件里面的调试信息解读
  15. 虚拟机无法访问主机mysql_主机无法连接虚拟机上的mysql
  16. 图论宽度优先搜索---八数码
  17. 致远项目管理SPM系统之进度计划管理概述
  18. IEEE754 浮点数:简读+案例=秒懂
  19. 爬虫获取网易云音乐单曲或歌单实现音乐闹钟
  20. 电子计算机发明于1946年对不对,2011国家公务员考试常识900题(最新)

热门文章

  1. 选项卡jacascript
  2. Windows Phone 7之初体验(四.平台架构简介)
  3. 成功安装Visual Studio 2008.
  4. 华为机试HJ67:24点游戏算法
  5. bcp入库oracle,Sybase中的BCP用法实践 与 Oracle的SQLLDR用法实践
  6. edittext在哪可以获取有效值_java-从EditText获取文本字符串?
  7. 天融信防火墙web配置_天融信协议转换交付系统震撼发布——IPv4/IPv6融合改造利器...
  8. tensorflow 安装_安装tensorflow-gpu 2.0
  9. java适应性自旋锁_深夜!小胖问我,什么是自旋锁?怎么使用?适用场景是啥?...
  10. sock 文件方式控制宿主机_docker的容器可视化工具portainer