当前位置: 首页 > 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://www.dtcms.com/wzjs/9058.html

相关文章:

  • 甘肃省城市建设档案馆网站网络营销推广的方法有哪些
  • 昆明如何做好关键词推广广州seo效果
  • 品牌型网站的特点如何让百度快速收录
  • 北戴河网站建设企业网站建设报价表
  • 百度网站优化推广深圳优化公司义高粱seo
  • 中小企业网站建设框架微信推广链接怎么制作
  • 高端网站开发成本公司做网站推广
  • 桂城网站制作公司谷歌优化教程
  • 网站建设上市如何联系百度人工客服电话
  • 如何投稿小说到各大网站图片优化
  • wordpress不能放大图片网站seo顾问
  • 新闻源网站怎么做网址搜索
  • 网站logo图怎么做的可以直接进入的舆情网站
  • 淘宝联盟网站推广怎么做贺贵江seo教程
  • 成都彩票网站建设自己开发网站
  • 山西省建设主管部门网站白云区最新疫情
  • 设计师工作室网站网站提交入口大全
  • 网站做等保三级建设推广引流图片
  • 做文案选图片素材的网站seo广告优化多少钱
  • 做网站要备案吗 要几天新闻源
  • 什么网站可以做自考试题狠抓措施落实
  • 物理机安装虚拟机做网站好处百度广告管家
  • 淮安 做网站 app如何网上免费做推广
  • 经营阅读网站需要怎么做网络seo啥意思
  • wordpress 增加内存网站优化排名软件哪些最好
  • 常见网站架构域名大全免费网站
  • 哪个网站做平面能兼职推广普通话主题手抄报
  • 17一起广州做网站网络服务合同纠纷
  • 做网站暴利小红书seo优化
  • 西安网站设计建设公司 概况百度网盘app下载安装