Android 使用UDP广播无法接受到消息

Android广播--实现基于UDP协议通信 一、什么是UDP协议 我们最常听到的就是TCP与UDP的区别,首先要明白TCP/IP网络模型,TCP/IP是互联网相关的各类协议族的总称,之所以命名为tcp/IP,是因为TCP、IP协议是两个很重要的协议。 这些协议可划分为四层:数据链路层、网络层、传输层、应用层。 应用层:文件传输、电子邮件、文件服务、虚拟终端 超文本传输协议(HTTP):万维网的基本协议 远程登陆(Telnet):提供远程访问其它主机功能,允许用户登录internet主机,并在这台主机上执行命令 文件传输:TFTP(简单文件 阅读详情
后台给了一段UDP的代码,在Windows上面运行都可以收到
但是在安卓上socket?receive一直卡在这里
try {
    // 先获取本机IP地址
//    val ipAddress = NetworkUtils.getIPAddress(context)
//    if (ipAddress.isNullOrEmpty()) {
//        func.invoke("", false)
//       return@withContext
//    }
//    val bindAddr = InetAddress.getByName(ipAddress)
//    socket = DatagramSocket(dataGramPort,bindAddr)  !!!不要使用这种方式来初始化!!!

    // 打开广播
    socket = DatagramSocket(dataGramPort) //请直接设置一个端口即可
    socket?.setBroadcast(true)

    // 准备广播地址和数据包
    val broadcastAddress = InetAddress.getByName("255.255.255.255") // 或指定子网的广播地址
    val buffer = discoveryMsg.toByteArray()
    val packet = DatagramPacket(buffer, buffer.size, broadcastAddress, targetPort)

    // 发送广播消息
    socket?.send(packet)

    // 超时时间
    socket?.soTimeout = 5000

    // 等待设备响应 超时时间
    val responseBuffer = ByteArray(1024)
    val responsePacket = DatagramPacket(responseBuffer, responseBuffer.size)


    while (true) {
        try {
            Log.i(TAG, "正在搜索设备...")
            socket?.receive(responsePacket)
            val response = String(responsePacket.data, 0, responsePacket.length)
            val hostAddress = responsePacket.address.hostAddress
            Log.e(TAG, "发现主机:${hostAddress}")
            Log.e(TAG, "相应数据:${response}")
        } catch (e: Exception) {
            Log.e(TAG, "搜索设备错误:${e.message}")
            break
        }
    }

} catch (e: Exception) {
    e.printStackTrace()
    Log.e(TAG, "搜索设备错误:${e.message}")
    func.invoke("发生异常${e.message}", false)
}
Android客户端接收PC端UDP广播 Android作为客户端,PC端作为服务器端:实现服务器端(PC)发送广播消息,Android作为客户端,不断监听服务器端指定的端口发来的消息,从而实现对Android客户端应用的控制。 阅读详情

相关推荐

Android UDP 广播实战:DatagramSocket 实现局域网消息收发

本文详细介绍了在Android应用中使用DatagramSocket实现UDP广播进行局域网消息收发的实战方法。涵盖权限配置、DatagramSocket创建、多设备兼容性处理、消息发送与接收实现,以及性能优化和调试技巧,帮助开发者快速掌握局域网通信核心技术。

oauth7security的博客 678

android:Udp广播/单播/组播的实现

广播 public class MainActivity extends AppCompatActivity { private Button sub_btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main5);

谢桥的博客 4726

Android UDP广播 客户端循环发送与接收

public class UdpBroadcast {private int iReceivePort = 0; //接收到消息的端口号private static final int TIMEOUT = 200; // 设置超时为200msprivate String udpresult; //服务器返回的消息/** * udp广播 */public String doUdpFind(Strin

Moes 4971

Android收发UDP报文详解 及 优雅解决接收不到问题

前段时间项目组接了一个研究所项目,移动端这边需要做一个UDP接收报文的程序APP,其中还涉及到多页面之间收发报文、动态修改地址、端口号等等。原本编写这个收发程序并不难,步骤也比较固定,在网上找了相关例子进行二次开发,可是发现UDP报文接收不到,这其中还是隐藏着某些坑,仅以此篇文章来总结其奥妙精髓。

lemonGuo的大脑皮层、小脑、海马体、杏仁核..... 2万+

Unity UDP局域网广播 组播 Android

Unity Android程序,想实现一个局域网会议程序。 一个程序创建好房间后,需要让其他客户端知道,就需要不断往局域网发消息 开始想使用广播,后来改成组播。这里说一下这两种方式吧 一、广播 广播会往局域网所有客户端发送一次消息。 _socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, Protocol...

BDDNH的博客 3145

HBF凭什么能挑战HBM?

最近AI圈聊得最多的,除了大模型迭代,就是“算力瓶颈”。大家都知道GPU不够用、HBM抢疯了,但很少有人注意到,存储层正在酝酿一场革命——高带宽闪存(HBF)。今天就结合HBM之父Joungho Kim教授的最新观点,跟大家好好盘盘这门技术:它不是HBM的替代品,却可能重塑AI推理的游戏规则,甚至在2038年超越HBM市场规模。先澄清一个核心认知:HBF不是凭空冒出来的新技术,而是站在HBM肩膀上的“优化款”。

存储随笔 2130

android java udp广播 用于局域网搜索扫描设备。

组播通过把224.0.0.0-239.255.255.255的D类地址作为目的地址,有一台源主机发出目的地址是以上范围组播地址的报文,在网络中,如果有其他主机对于这个组的报文有兴趣的,可以申请加入这个组,并可以接受这个组,而其他不是这个组的成员是无法接受到这个组的报文的。UDP编程常常使用,但是广播和多播倒很少用到,依据协议的样子,在局域网内该有很大的作为。组播是一种数据包传输方式,当有多台主机同时成为一个数据包的接受者时,出于对带宽和CPU负担的考虑,组播成为了一种最佳选择。把自身的ip地址发送过去。

代码是贝多芬的音符 1735

UE5.4像素流送实战:GPU驱动、WebRTC与系统级调优全解析

像素流送是将实时3D渲染画面通过WebRTC编码推流至浏览器的关键技术,其本质是GPU硬件编码(如NVENC)与低延迟网络传输(UDP+BBR)的深度协同。理解其原理需跨越图形API(Vulkan/DX12)、实时音视频(H.264/H.265)、WebRTC信令与NAT穿透四大技术层。技术价值在于突破终端算力限制,支撑远程工业仿真、云VR看房等高交互场景;但落地难点集中于基础设施层——如NVIDIA驱动与UE5.4.3的CUDA Toolkit 12.2兼容性、Linux内核TCP/UDP参数调优、GPU

weixin_32943857的博客 615

android开发:获取手机IP和UDP广播

android开发:获取手机IP和UDP广播

编程之道在明明德在亲民在止于至善 3105

手把手教你用DCA1000和mmWave Studio 2.0采集AWR1843雷达数据(附驱动安装与常见报错排查)

本文详细介绍了使用DCA1000和mmWave Studio 2.0采集AWR1843毫米波雷达数据的全流程指南,包括硬件连接、驱动安装、软件配置及常见报错排查。通过实战经验分享,帮助开发者快速掌握数据采集技巧,优化雷达参数配置,提升数据质量与采集效率。

weixin_30070339的博客 332

彻底解决Win11 Android模拟器驱动权限问题:手动修改silent_install.bat的保姆级教程

本文提供了一份详细的Win11 Android模拟器驱动权限问题解决方案,重点介绍了手动修改silent_install.bat脚本的两种方法。通过分析问题根源并给出具体代码修改方案,帮助开发者彻底解决Android Studio在Windows 11上安装时遇到的UAC循环弹窗问题,确保android-emulator-hypervisor-driver顺利安装。

dengliugong3918的博客 461

UDP广播遇到的坑

一、前提 在做一个pc服务器(eclipse)向android客户端发送udp广播的功能(同一电脑上测试),android始终收不到数据 电脑ip:192.168.0.19 真机手机ip:192.168.0.24 android模拟器ip:10.0.2.15 pc服务器私网地址:10.0.2.2 子网掩码:255.255.255.0 二、问题 1、真机上可以收到,广播地址为192.

虫逗蚊子的博客 1万+

source tree clone error:fatal remote error: Repository not found

source tree clone error:fatal remote error: Repository not found

Linda的前端开发路 3077

Android:安卓学习笔记之广播机制的简单理解和使用

广播机制的简单理解和使用广播机制广播简介广播分为两大类1.标准广播(Normal broadcasts)2.有序广播(Ordered broadcasts)注册方式静态注册广播动态注册广播两种注册各有什么优缺点发送无序广播发送有序广播常见问题1、怎样设置有序广播的接收顺序呢?2、前面的广播接收器怎样截断正在传递的广播呢?3、BrocastReceiver 里可不可以执行耗时操作4、BroadcastReceiver,LocalBroadcastManager 区别5、如何通过广播拦截和 abort 一条短信

JMW1407的博客 3937

HITS算法详解及代码实现

占坑

蓁蓁尔的博客 7462

椭圆曲线点加的推导公式(一)

椭圆曲线点加推导过程

qq_32100199的博客 1517

nodejs + uniapp 开发安卓APP实现UDP广播

用nodejs编写UDP服务端,uniapp开发安卓APP客户端UDP 服务端效果图: 客户端效果图: UDP广播服务端 nodejs 代码: var dgram = require('dgram'); var server = dgram.createSocket('udp4'); server.on('close',()=>{ console.log('socket已关闭'); }); server.on('error',(err)=>{ console.log(er

weixin_38946164的博客 3593

从零开始学习PX4源码20(遥控器模式切换如何执行)

本节主要学习PX4的手动遥控器切换模式,具体是如何实现的,具体改变了哪些变量,和模式管理有什么联系。

陌城烟雨 316

android udp 广播通信,Android单播UDP可以工作,但是广播不能

对于一项任务,我们尝试设置多个Android设备,通过本地WiFi网络从笔记本电脑接收UDP广播。在工作原理:两台笔记本电脑上的Python终端能够相互发送和接收UDP广播或单播。在Android设备可以接收直接发送到其IP的UDP消息什么不起作用:Android设备(LG/googlenexus4)不接收UDP广播消息(另一台运行Python的笔记本电脑接收到)有什么建议吗?以下是我们每个组件的...

weixin_29311017的博客 597

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android中udp协议广播的实现

这是本人在实现upd局域网广播遇到的问题总结帖.(是广播不是组播) 以下几个问题可能导致无法接受到广播 1. 有些厂家的手机rom默认是关闭了接受局域网广播这个功能的,所以我们需要一个MulticastLock这个类来开启接受广播的功能; 这个MulticastLock是WifiManager的内部类,我们需要一个WifiManager实例才能获得一个MulticastLock实例. 开启

盛夏光年的学习笔记 3038

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android Socket通信(二) --UDP,单播,广播和多播(组播)

系列文章: Android 使用socket.io 实现实时通信 在上章中,我们学习了 socket 的基本使用。但都是基于TCP的,这篇,我们来学习一些 Socket 的UDP 的操作,并了解多播和广播的概念,为接下来的局域网文件传输,打上一个很好的基础。 一、认识 UDP 与 TCP 不同,UDP 是一个面向数据包的传输层协议,进程的每一个输出操作都正好产生一个UDP数据报,并组装成一份待...

夏至的稻穗的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

android udp发广播包,Android UDP 广播

2019-07-08 遇到的一点小问题最近做局域网内Android端发UDP广播出去,然后接收服务器返回的信息。参考的文章 Android UDP 广播实践,要用的都有写。private final static String BROADCAST_IP = "255.255.255.255"; //广播范围private final static int BROADCAST_PORT...

weixin_31754209的博客 463

基于Android热点的局域网UDP广播,部分手机收不到UDP报文的问题

这两天写了个小程序,实现的功能为:一台手机发WIFI热点ap,其他手机接入这一WIFI,在以此组建的局域网内,可以广播消息。为了逻辑的通顺而选择了UDP广播,广播IP选了255.255.255.255 遇到的问题为:其他android手机收不到热点手机的udp广播消息,而热点手机可以收到其他手机以及自己的UDP报文。当关闭了热点手机的数据流量以后,热点手机也不再能够收到自己的UDP报文。 初步

qq_27331979的博客 4923

理解 UDP 协议与实战:Android 使用 UDP 发送和接收消息

UDP(User Datagram Protocol,用户数据报协议)是一个无连接的网络通信协议。与 TCP 不同,UDP 不建立连接,不保证数据的顺序和完整性。它的特点是简单、高效,适用于实时性要求较高、对数据丢失容忍的应用,如音视频传输、DNS 查询等

居然是阿松的博客 2348
上一篇: 如何从InputStream获取完整长度的字节数组
下一篇: FragmentStateAdapter 导致内存泄露的问题记录
爱吃西瓜J
博客等级 码龄9年 6粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值