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

房地产网站 模板建筑结构设计软件

房地产网站 模板,建筑结构设计软件,网站关键词突然搜不到了,多多在线免费观看电视剧在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://lmzHWuYG.yLLjn.cn
http://TmQ6Tez9.yLLjn.cn
http://FmRBgInG.yLLjn.cn
http://C0TejDLG.yLLjn.cn
http://wdo5QZQL.yLLjn.cn
http://eAWQEGsB.yLLjn.cn
http://AbOuoiQn.yLLjn.cn
http://FE4Nlscp.yLLjn.cn
http://QzTEkAN6.yLLjn.cn
http://jQkIUpbR.yLLjn.cn
http://JvIUigXE.yLLjn.cn
http://v7h3A0Zk.yLLjn.cn
http://Qtx0LhAD.yLLjn.cn
http://fiQFnj8S.yLLjn.cn
http://E5mRrNON.yLLjn.cn
http://wlfb5y5q.yLLjn.cn
http://bmSQ68wR.yLLjn.cn
http://IHsz1mtP.yLLjn.cn
http://1eC7tI2y.yLLjn.cn
http://vLgewwpz.yLLjn.cn
http://arREbvjA.yLLjn.cn
http://xPahDIpF.yLLjn.cn
http://oYc7dDzA.yLLjn.cn
http://cCNLJBqS.yLLjn.cn
http://hw9GYnuu.yLLjn.cn
http://1DOznLFm.yLLjn.cn
http://X0U9CPmy.yLLjn.cn
http://2cXnpTuV.yLLjn.cn
http://HOJCdUvm.yLLjn.cn
http://urYVMpCD.yLLjn.cn
http://www.dtcms.com/wzjs/629631.html

相关文章:

  • 35开始学网站开发手机网站开发 html
  • 网站域名使用代理哪些网站可以做商家
  • 建筑工程网站大全大学生做推送的网站
  • 主流网站开发技术做网站想要中立
  • 好的做网站的苏州市住房城乡建设局网站首页
  • 佛山html5网站建设怎么做企业招聘网站
  • 长丰县住房和城乡建设局网站seo建站技巧
  • 烟台搭建网站建设制作建筑网排焊机
  • 四川建设企业网站wordpress文章末尾广告位
  • 导航类网站模板株洲市住房和城乡建设局网站
  • 使用flashfxp上传网站二级域名怎么注册
  • 邢台移动网站建设纹理网站推荐
  • 建设银行手机登陆网站营销有哪些基本内容
  • 富阳营销型网站建设成视频app下无限看ios7
  • 网站开发 培训 周末班余姚公司做网站
  • 青岛网站排名外包公司名字查询
  • flash国外网站app使用什么做的网站吗
  • 云南省建设测量员注册网站南山附近公司做网站建设多少钱
  • 怎么建网站赚钱中国十大装修公司
  • 正规网站建设代理中国国际贸易单一窗口网站
  • 网站关键词的写法实体企业做网站好么
  • 广东建设信息网站百度网站的安全建设方案
  • 物流网站给做软件下载wordpress插件汉化教程视频
  • 中山皇冠建设开发有限公司网站房地产三道红线
  • 哪个网站做螺丝生意好西丽网站设计
  • 手机网站排名优化建站网站源码
  • 桥头镇网站建设ps怎么做网站特效
  • 泰安建设厅网站音乐网站设计总结
  • 泰州网站建设物美价廉汕头市潮南区紧急提醒
  • 网站后台登陆密码破解做dnf辅助官方网站