当前位置: 首页 > wzjs >正文

河南建设信息工程网重庆seo排名

河南建设信息工程网,重庆seo排名,2018政府网站建设工作计划,企业+php网站建设在Android中,UDP广播和监听可以通过DatagramSocket和DatagramPacket来实现。UDP广播允许你将数据包发送到网络中的所有设备,而监听则允许你接收这些广播数据包。 1. 发送UDP广播 要发送UDP广播,你需要创建一个DatagramSocket,并使…

在Android中,UDP广播和监听可以通过DatagramSocket和DatagramPacket来实现。UDP广播允许你将数据包发送到网络中的所有设备,而监听则允许你接收这些广播数据包。

1. 发送UDP广播
要发送UDP广播,你需要创建一个DatagramSocket,并使用DatagramPacket来封装要发送的数据。广播地址通常是255.255.255.255,或者子网广播地址(如192.168.1.255)。

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class UdpBroadcastSender {private static final ExecutorService executorService = Executors.newCachedThreadPool();public static void sendBroadcast(String message, int port) {executorService.execute(() -> {DatagramSocket socket = null;try {// 创建DatagramSocketsocket = new DatagramSocket();socket.setBroadcast(true);// 将消息转换为字节数组byte[] sendData = message.getBytes();// 创建DatagramPacket,指定广播地址和端口DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, InetAddress.getByName("255.255.255.255"), port);// 发送数据包socket.send(sendPacket);System.out.println("Broadcast message sent to: 255.255.255.255:" + port);} catch (Exception e) {System.err.println("Failed to send broadcast: " + e.getMessage());} finally {// 确保socket关闭if (socket != null && !socket.isClosed()) {socket.close();}}});}public static void shutdown() {executorService.shutdown();}
}

2. 监听UDP广播
要监听UDP广播,你需要创建一个DatagramSocket并绑定到指定的端口。然后使用DatagramPacket来接收数据。

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class UdpBroadcastReceiver {private static final ExecutorService executorService = Executors.newCachedThreadPool();private DatagramSocket socket;private boolean isListening = false;public void startListening(int port, BroadcastListener listener) {executorService.execute(() -> {try {// 创建DatagramSocket并绑定到指定端口socket = new DatagramSocket(port);byte[] receiveData = new byte[1024];DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);isListening = true;while (isListening) {// 接收数据包socket.receive(receivePacket);// 将接收到的数据转换为字符串String message = new String(receivePacket.getData(), 0, receivePacket.getLength());// 回调监听器if (listener != null) {String senderIp = receivePacket.getAddress().getHostAddress();listener.onBroadcastReceived(message, senderIp);}}} catch (Exception e) {System.err.println("UDP listening error: " + e.getMessage());} finally {stopListening();}});}public void stopListening() {isListening = false;if (socket != null && !socket.isClosed()) {socket.close();}}public static void shutdown() {executorService.shutdown();}// 定义回调接口public interface BroadcastListener {void onBroadcastReceived(String message, String senderIp);}
}

3. 在Android中使用

import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity implements UdpBroadcastReceiver.BroadcastListener {private static final int UDP_PORT = 8888; // 自定义端口private UdpBroadcastReceiver receiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 初始化UDP广播接收器receiver = new UdpBroadcastReceiver();// 开始监听广播receiver.startListening(UDP_PORT, this);// 发送广播UdpBroadcastSender.sendBroadcast("Hello from Android!", UDP_PORT);}@Overridepublic void onBroadcastReceived(String message, String senderIp) {// 在主线程中更新UIrunOnUiThread(() -> {Log.d("UDP_BROADCAST", "Received: " + message + " from " + senderIp);});}@Overrideprotected void onDestroy() {super.onDestroy();// 停止监听并关闭线程池receiver.stopListening();UdpBroadcastSender.shutdown();UdpBroadcastReceiver.shutdown();}
}

总结:
线程池管理

使用ExecutorService管理线程,避免频繁创建和销毁线程。

通过shutdown()方法优雅地关闭线程池。

资源释放:

在finally块中确保DatagramSocket关闭,避免资源泄漏。

回调机制:

通过BroadcastListener接口实现回调,解耦接收逻辑和UI更新。

动态停止监听:

提供stopListening()方法,支持动态停止UDP监听。

异常处理:

捕获并记录异常,确保程序在出现错误时不会崩溃。

http://www.dtcms.com/wzjs/515155.html

相关文章:

  • 企业微信网页广州:推动优化防控措施落
  • 网站是哪家公司做的怎么做网站链接
  • 做h5页面的网站有哪些yandex搜索入口
  • 地球村网站建设万能引流软件
  • 内容转载的网站怎么做怎么看百度关键词的搜索量
  • 哪里有做网站较好的公司抖音广告代运营
  • 蓝色为主的网站案例qq群排名优化软件官网
  • 长沙网开亿面做网站多少钱网站发布平台
  • 怎么修改网站源文件小程序
  • 顶呱呱网站开发推广优化工具
  • 销售推广做那个网站西安核心关键词排名
  • 网站建设成果电脑培训学校在哪里
  • 乌鲁木齐官方网站百度上如何做优化网站
  • 可以做砍价活动的网站建站优化推广
  • wordpress 选择服务器灵宝seo公司
  • 大连公司招聘太原seo关键词优化
  • html5手机网站欣赏河北百度seo
  • 河南住房和城乡建设厅网站资质微博推广有用吗
  • psd做网站切片广告软文范例200字
  • 上传网站步骤阳西网站seo
  • 谷歌网站推广销售百度网站权重查询
  • 关于建设集团公司网站的报告网络营销方案范文
  • 用bootstrap做的手机推销网站模板河北seo推广公司
  • 怎样在手机上做自己的网站360免费建站教程
  • 网站推广方案中确定目标是指免费长尾词挖掘工具
  • 做购物微信网站优化大师优化项目有
  • 制作商城网站日本积分榜最新排名
  • 茶叶网站建设的优势百度明星人气榜
  • 元氏县城有做网站广告的吗seo课程心得体会
  • 中小企业建站2023年新闻热点事件摘抄