Java-Android 上的 MulticastSocket 问题

2024-05-02

我开始使用 MulticastSocket 进行编码,尝试制作一个带有客户端和服务器的简单应用程序来发送消息。

我的服务器代码:

    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.InetAddress;
    import java.net.MulticastSocket;
    import java.net.SocketException;


    public class Servidor {
 private static MulticastSocket ms;
 public static void main(String[] args) throws IOException{

  InetAddress sessAddr = InetAddress.getByName("224.2.76.24");
     try{
    sessAddr = InetAddress.getByName("224.2.76.24");
       ms = new MulticastSocket(5500);
       ms.joinGroup(sessAddr);

       while (true)
       {
       byte[] mensaje = new byte[1024];
       mensaje = "aa".getBytes();
       DatagramPacket dp = new DatagramPacket(mensaje, mensaje.length,sessAddr,5500);
       ms.send(dp);
       }
      }
      catch (SocketException se) {
        System.err.println(se);
      }

      ms.leaveGroup(sessAddr);

    }

}

在客户端上是这样的:

    package com.example;
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.InetAddress;
    import java.net.MulticastSocket;
    import java.net.UnknownHostException;

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.EditText;
    import android.widget.TextView;

    public class ClienteMultiCast extends Activity {
    /** Called when the activity is first created. */


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView Mensaje;
        Mensaje =(TextView)findViewById(R.id.Mensaje);


        InetAddress ia = null;
        byte[] buffer = new byte[65535];
        MulticastSocket ms = null;
        int port = 5500;
        try {
        ia = InetAddress.getByName("224.2.76.24");
        DatagramPacket dp = new DatagramPacket(buffer, buffer.length,ia,port);
        ms = new MulticastSocket(port);
            ms.joinGroup(ia);
            while (true) {
                ms.receive(dp);
                String s = new String(dp.getData(),0,dp.getLength());
                Mensaje.setText(s);
            }

            } catch (UnknownHostException e) {Mensaje.setText(e.getMessage());} catch (IOException e) {Mensaje.setText(e.getMessage()); }

            try {
            ms.leaveGroup(ia);
             } catch (IOException e) {
            Mensaje.setText(e.getMessage());
  }
    }
}

问题是当我启动两者时,什么也没有发生。客户端没有收到任何消息。

知道出了什么问题吗?


Diego,

默认情况下,Android WiFi 堆栈会过滤掉多播数据包。看一眼http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html.

你需要一些类似的东西:

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    /* Turn off multicast filter */
    MulticastLock mcastLock = new MulticastLock();
    mcastLock.acquire();

    /* Process Multicast Packets */

  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java-Android 上的 MulticastSocket 问题 的相关文章

  • 旋转 Google 地图中的两层标记图标

    在我的应用程序中 我向地图添加了一定数量的标记 如下所示 private fun addMarker googleMap GoogleMap location Location val options MarkerOptions optio
  • 如何在Java中打印保留2位小数的浮点数?

    我可以用System out print 您可以使用printf http java sun com j2se 1 5 0 docs api java io PrintStream html printf 28java lang Strin
  • 检测设备方向

    我需要检测 Android 设备方向变化 而无需手动处理传感器数据 同时保持活动方向坚持某个方向 onConfigurationChange不会起作用 因为会让我的活动不旋转 通过使用传感器数据来检测方向变化 我认为这是轮子的发明 因为 A
  • 如何在 JdbcTemplate 中创建 mySQL 存储过程

    背景 为了解决 MySql 中某些语句只允许在存储过程中出现的问题 我尝试在 JdbcTemplate 提交的 sql 中创建 运行然后删除存储过程 一个简单的例子是 这恰好是在 Spring Boot 中 Service public c
  • 如何防止应用程序被盗(针对Android应用程序)?

    我想知道防止人们窃取我的应用程序的最有效方法是什么 在线下载 apk 的副本而不是购买它 我已经花了一个lot特别是 Droidbox 上的时间 并且不会发布 Sync 直到我可以保证提供专业版本的非法副本的人无法发布 有人实施过这个吗 我
  • 两条腿的 OAuth 和 Gmail Atom feed

    我们正在尝试让 2 legged OAuth 与 Gmail Atom feed 一起使用 我们使用 John Kristian Praveen Alavilli 和 Dirk Ba lfanz 贡献的 Java 库 http oauth
  • Servlet 调度程序当前不可用

  • Fresco:滚动 RecyclerView 后图像消失

    我有一个 Horizo ntal RecyclerView 每个项目都有一个使用 Facebook Fresco 图像库加载到其中的图像 然而 虽然正确的图像最初是在屏幕上滚动一点时加载的 但当 RecyclerView 进一步滚动时 它就
  • Java 不可变对象 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习不变性的概念 据我了解 一旦创建对象 不可变对象就无法更改其值 但我不明白不可变对象的以下用途 They are 自动是线程
  • 如何让surfaceview透明

    大家好 我想让我的 DrawingSurface 视图透明 我尝试了很多东西 但它不起作用 这是我的 xml 代码 使我的表面视图透明
  • Java LRU 缓存使用 LinkedList

    堆栈溢出的新手 所以请不要介意我以菜鸟的方式问这个问题 我正在尝试使用链表实现 LRU 缓存 我在这里看到了使用 linkedHashMap 和其他数据结构的其他实现 但对于这种情况 我正在尝试使用链表创建最佳优化版本 正如我在技术期间被问
  • android - 如何让按钮每次按下时单击播放声音文件?

    我打开了一个新项目 现在我想做的是 通过按下按钮 我想要播放一个 mp3 文件 而且每次按下按钮时 声音文件都会再次从头开始播放 所以假设 mp3 长 10 秒 我按下按钮 它正在播放 4 秒后我再次按下按钮 声音将再次播放 现在我想知道的
  • javax.xml.bind.JAXBException: 类 *** 及其任何超类在此上下文中均未知

    我正在尝试通过 REST Web 服务传递对象 以下是我的课程 使用一些示例代码解释了我需要的功能 Rest Web 服务类方法 POST Path find Consumes MediaType APPLICATION FORM URLE
  • Java 中更高级的泛型

    假设我有以下课程 public class FixExpr Expr
  • Android - 检测视图上的双击和三次点击

    我一直在尝试构建一个可以检测双敲击和三敲击的敲击检测器 在我的努力失败后 我在网上搜索了很长时间以找到可以使用的东西 但没有运气 奇怪的是 像这样的图书馆如此稀缺 有什么帮助吗 你可以尝试这样的事情 尽管我通常建议不要使用三次点击作为一种模
  • 使用正则表达式匹配阿拉伯文文本

    我试图使用正则表达式仅匹配阿拉伯语文本 但出现异常 这是我的代码 txt matches P Arabic 这是例外情况 线程 main 中的异常 java util regex PatternSyntaxException 索引 9 附近
  • 在没有EOF的情况下停止读取java中的输入

    In 问题 如何停止读取输入 我的程序继续运行 要求更多输入 public static void main String args throws Exception BufferedReader br new BufferedReader
  • Android Webview隐私浏览

    我在我的 Android 应用程序中使用 webview 从多个站点获取一些网页 我对 webview 行为有一些疑问 webview 是否存储历史记录 cookie 表单自动填充信息 如果是的话 我们可以阻止它这样做吗 如果 Webvie
  • Java 可变 BigInteger 类

    我正在使用 BigIntegers 进行计算 该计算使用一个调用 multiply 大约 1000 亿次的循环 并且从 BigInteger 创建新对象使其非常慢 我希望有人编写或找到了 MutableBigInteger 类 我在 jav
  • FCM(Firebase Cloud Messaging)如何发送到所有手机?

    我创建了一个小型应用程序 能够从 FCM 控制台接收推送通知 我现在想做的是向所有使用 API 安装应用程序的 Android 手机发送推送通知 这就是我完全迷失的地方 有没有办法在不收集所有注册ID的情况下将其发送到所有手机 这是否仅适用

随机推荐

  • 表视图重新加载部分崩溃

    我有一个包含 4 个部分的表格视图 每个部分有 1 2 个表格视图单元格 第一个单元格有一个 uiswitch 作为附件视图 控制应用程序的颜色主题 在白天模式和夜间模式之间切换 一旦按下开关 就会调用一个函数 更改导航栏的颜色和背景颜色
  • Docker容器CPU使用率监控

    根据 docker 的文档 我们可以通过以下方式获取 docker 容器的 CPU 使用率码头工人统计命令 CPU 列将给出容器正在使用的主机 CPU 的百分比 假设我限制容器使用 50 的主机单个 CPU 我可以通过 cpus 0 5 选
  • 在没有条件的情况下,如何使查询不返回任何内容?

    相当简单 我有一对多 多对一关系 我想查询它 但是 当未提供任何 WHERE 子句信息时 我不希望返回任何结果 简单来说 如何使查询变得非贪婪 您可以添加一个始终为 false 的 where 子句 并附加您想要用 OR 提供的条件 sel
  • 多个结构体,需要在方法中访问相同的字段

    我目前尝试用 C 语言编写一些简单的控制台游戏来娱乐 为此 我需要能够在 嗯 C 中打印类似窗口的结构 我想使用通用渲染方法 让我们称之为frame render 渲染所有不同的 ui 元素 现在的问题是 如何解决这个问题 给定场景 The
  • 计算 IEnumerable 的计数(非泛型)

    谁能帮我一个Count扩展方法为IEnumerable 非通用接口 我知道LINQ不支持它 但是如何手动编写呢 yourEnumerable Cast Count 关于性能的评论 我认为这是过早优化的一个很好的例子 但你可以看一下 stat
  • 使用 Ctrl+v 或右键单击 -> 粘贴检测粘贴的文本

    使用 JavaScript 如何检测用户将哪些文本粘贴到文本区域 您可以使用粘贴事件来检测大多数浏览器中的粘贴 尤其是 Firefox 2 当您处理粘贴事件时 记录当前选择 然后设置一个简短的计时器 在粘贴完成后调用一个函数 然后 该函数可
  • 为什么 SFINAE (enable_if) 在类定义内部起作用,但在外部不起作用

    过去几个小时我一直在努力解决这个非常奇怪的问题 在解决了 SFINAE 的 5 6 个其他问题之后 因为我是新手 基本上在下面的代码中我想要f 适用于所有可能的模板实例化 但有g 仅当N 2 include
  • 我应该如何创建模型类来调用API(使用MVC模式)?

    目前我正在调用一个APIviewcontroller但这本身并不是 MVC 的良好编程实践 这是我的代码 void fetchData NSMutableURLRequest request NSMutableURLRequest allo
  • 如何在 jquery 上并排区分 mouseout/leave 事件?

    有没有办法知道鼠标事件是否已从元素的特定一侧离开 我的意思是 我有一个带有 mouseover mouseenter 事件的 DIV 并且我只想在鼠标离开到元素的左侧时触发该操作DIV 并向右 但如果它从底部或顶部离开 则不应触发任何操作
  • 如何按布尔值对数组进行排序

    我有一个看起来像这样的数组 array array foo gt true array foo gt false array foo gt true array foo gt true array foo gt false 有没有一种简单的
  • 如何在 mongodb + C# 中计数、选择和更新嵌套元素

    我正在创建一个开源社交网络 我不知道是否可以在此处发布 URL 使用 net core 2 1 mongo atlas 使用驱动程序 v2 9 2 我正在从 MS SQL 我知道如何对其进行操作 迁移到 mongo 我仍在学习 我有两个实体
  • IE 11 使用 HTML input=file 标签时锁定文件

    我在 IE11 中使用文件输入中的浏览来选择文件 我在资源管理器中使用shift delete删除了该文件 然后 当我刷新文件夹时 我删除的文件会再次出现在资源管理器中 无论如何 我可以通过客户端 JavaScript 释放文件句柄吗 我在
  • 在 Haskell/Yampa 和 HOOD 中调试游戏对象的输出

    我一直坚持使用 Haskell Yampa Arrows with HOOD 为我的游戏对象生成调试输出 我的引擎基本上运行一系列游戏对象 这些对象产生输出状态 线 圆 然后进行渲染 data Output Circle Position2
  • 动态添加导航抽屉中的项目

    我创建了抽屉 但是我想动态设置抽屉的项目列表 意味着从数据库获取数据并设置为抽屉列表 是否可以 是的 比如何 我也知道静态抽屉 尝试这个 final Menu menu navigationView getMenu for int i 1
  • .Net HashSet唯一性计算完全基于哈希码吗?

    我想知道 Net 是否HashSet
  • xmlstarlet:通过位置号选择元素

    我有这个 XML 文件
  • 如何在
    CSS 中正确定位箭头

    我想更改详细信息中出现的箭头的位置 我尝试过 float left 但如果线条太大 如上面示例中的线条 则当我调整窗口大小时 箭头将移动到下方线条的开头 我希望它保留在第一行的第一个字母之外 我怎样才能做到这一点 Example
  • WebAPI如何处理嵌套资源?

    我正在寻找有关使用 WebAPI 2 时最佳实践的意见和建议 假设我有两个控制器 用户和书籍 并且想要接受这些路由 users user id books lt books owned by user id books lt all boo
  • 在 Windows 上使用 Python 打开设备句柄

    我正在尝试使用 Giveio sys 驱动程序 该驱动程序需要先打开一个 文件 然后才能访问受保护的内存 我正在查看 WinAVR AVRdude 中的 C 示例 它使用以下语法 define DRIVERNAME giveio HANDL
  • Java-Android 上的 MulticastSocket 问题

    我开始使用 MulticastSocket 进行编码 尝试制作一个带有客户端和服务器的简单应用程序来发送消息 我的服务器代码 import java io IOException import java net DatagramPacket