问题标签 [multicastsocket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在线使用多播套接字
我正在尝试创建一个服务器,该服务器通过数据报套接字接收音频馈送并将此音频流式传输到不同的侦听器。我最初是通过让另一个数据报套接字等待听众请求加入,然后为他们创建一个专用的数据报套接字,将它添加到一个数组中,当我发送音频时,我只是循环遍历所有数组以发送声音的。可能效率不高,但它最初可以工作(尽管现在由于未知原因它无法在线工作,尽管它在我的本地网络上完美运行)。
我决定对多播套接字进行更多研究,因为它们似乎非常适合我正在尝试做的事情,但是我对几点感到困惑,特别是您似乎只能使用具有以下范围的多播套接字这一事实IP 地址数:224.0.0.0 - 234.255.255.255。
这在本地网络中没问题,但我不明白这在网络上是如何工作的我可以选择让听众加入那个小组吗?
如果是这种情况,我怎么知道其他人是否没有使用相同的 IP 地址和端口来流式传输某种数据?我曾尝试为此寻找答案,但没有找到任何体面的答案。stackoverflow 中这个问题的答案只是说不可能:Host UDP Multicast Online, possible? 但是我又一次阅读并看到了无数教程,其中提到了多播套接字的主要用途之一是互联网广播电台,例如这个 youtube 教程说:https ://www.youtube.com/watch?v=yre19cIpYrQ on minute : 15:27。
如果是这种情况,它一定是可能的,但我只是无法得到一个关于这将如何工作的体面答案。如果您能花一些时间向我解释这一点,我将不胜感激!
android - Android 中 UDP 多播中的数据包丢失
我创建了一个应用程序,它提供了 android 中 UDP 数据包丢失的统计信息。这是我的应用程序架构。1) 多播 UDP 数据包的应用程序。下面是它的代码:
另一个接收这些多播 UDP 数据包的应用程序
持续运行并接收多播数据包的服务:
所以,我的问题是,在服务端,当我收到数据包时,大部分数据包丢失了 5-7%。这意味着,如果我以 5ms 的间隔发送 1000 个 512 字节的数据包,则在接收端会丢失 50-70 个数据包。
有没有办法可以减少这种丢包?或者我的代码是否有任何改进的机会,以便减少丢包?
提前致谢。
java - 如何使用 Java 多播套接字(UDP)?
我开发客户端-服务器应用程序,实时工作。服务器和客户端通过小消息进行交换,因此我为我的架构选择了 UDP(正如网络中许多文章中所建议的那样)。使用默认的 java 的 DatagramSocket/DatagramPacket 来组织我想要的所有东西对我来说不是问题,但是当我阅读文档时,我看到了“MulticastSocket”的机会。但对我来说完全不清楚:用户端的 MutlicastSocket 将如何知道在哪里连接?(服务器的公共 IP/端口)。真的,正如官方 java教程中所示。MulticastSocket 创建如下:
并且没有任何关于公共服务器 IP 和端口的规范。什么是“203.0.113.0”?应用程序的音调可能会向网络中的该地址发送一些东西,不是吗?
当我以常规(不是多播)方式创建客户端时,我使用如下内容:
其中“94.???.89.???” 是我服务器的公共 IP 地址,而 9898 是我服务器的端口,它会监听它。像那样:
在收到一些东西后,我可以与客户建立联系,并为他回答一些问题,比如:
即使客户端没有公共 IP,这种方法也很有效。这是为我建立连接的绝对清晰的方式,但我不明白 MulticastSocket 应该用于什么目的?
java - 在 Android 中设置多播服务器套接字
我找到了一些在 Android 中设置多播套接字服务器(接收)的示例,我正在尝试将其添加到我的项目中。我的构造函数代码如下所示:
但是,由于我不明白的原因,每次执行 joinGroup() 行时都会引发异常。奇怪的是, printStackTrace() 行没有给我任何东西,但 Log.e() 业务给了我以下信息:
我已经为我的代码添加了必要的权限(CHANGE_WIFI_MULTICAST_STATE、ACCESS_WIFI_STATE 和 INTERNET),并且我还获得了多播锁。
对这里缺少的内容有什么建议吗?
php - 不支持 MCAST_JOIN_GROUP 返回
我正在尝试使用 php 进行 udp 多播。
但是当我尝试加入多播组时:
它返回:
根据手册,它应该从 5.4 版开始支持。我正在运行版本 5.4.45。
android - 接收数据时多播套接字 Android 错误?
我是套接字编程的新手。我正在使用多播套接字通过 wifi 热点网络进行广播。但我在接收方方面遇到了问题。这是我的代码服务器端
客户端代码
}
我的问题是我的客户端代码在进入 socket.receive() 方法时卡住了。我在两边都启动了我的移动数据。在服务器端启动热点并从客户端连接到它。
c# - 如何检查多播套接字是否被占用?
我需要在多播上发送一些流。
有什么方法可以检查(从代码中)某些多播套接字是否被我连接到的网络上的其他人占用?
java - Java:具有两个不同输入源的多线程并做出反应
StackOverflow 上的第一个问题,如果我问错了,请见谅。
基本上,我正在编写一个多播客户端,它无限期地监听多播地址,直到用户在控制台中键入“退出”。我发现为 MulticastSocket 设置 SO_TIMEOUT,检查是否已键入“退出”,然后返回接收方法调用并没有真正起作用,因为可以在超时后立即发送数据包并检查控制台块. 所以我相信最好的选择是简单地让2个线程去一个监听套接字并阻塞直到它收到一些东西,另一个线程监听控制台直到被告知退出。我唯一的问题是我不确定如何让控制台监听线程告诉套接字线程关闭套接字并终止。System.end() 会起作用,但我担心我会打开一个套接字,等等。
TLDR;有没有办法让类的 main 方法启动一个线程,然后在该线程结束后以特定的方式响应?我需要在一个线程上收听控制台,在另一个线程上收听 MulticastSocket,或者只是在客户端类的主线程中收听。
感谢大家。
java - 多播路由中的 Dijkstra 算法
编辑:我重建了这个问题
我被分配了一个项目,我需要在其中模拟多播路由并在网络中放置标签。老师对我们需要什么样的模拟非常模糊,这就是我感到困惑的地方。我将概述模拟的要求。
在您的模拟中,您需要在小型和大型网络上运行“重新路由到源”算法。您需要在每条链路上随机生成成本,并随机选择一个节点作为源节点,其他几个节点作为目标节点。每个路由器都应该维护一个表格来显示与传入端口和传出标签相关的传入标签
上图供参考。每个节点的每个路由器都应该维护一个 MPLS 表。由于“reroute to source”算法实际上是单播的,所以不需要扩展表。
我需要的只是想法。我对 Dijkstra 的最短路径算法有很好的理解,但我觉得我对多播如何结合这种算法的理解存在差距。
所以,假设我的网络是双向的,算法会找到从每个源到目的地的最短路径,并沿着这条路径分配标签。然后,当找到所有最短路径后,我只需要合并这些路径并形成一棵树,用于多播路由。
你们有什么我可以看的给我模拟的想法吗?或任何基于经验的建议。我只是想了解我必须做什么
java - java多人游戏流畅的网络运行
我用java制作了一个简单的球和桨多人游戏。它用于MultiCastSocket
发送和接收数据。球仅在玩家
1 的系统上移动。球的位置由网络上的所有玩家发送。所有玩家都会收到数据,但只有 p1 以外的玩家会读取数据并更新他们的球位。现在这里的问题是,虽然球在 p1 上平稳移动,但在其他玩家的系统上却不是连续运动。屏幕上的球的离散实例是可见的。以下是我的代码的网络部分的代码片段:(这里 myTag 是球员号码,rec 是接收数据类的对象,它只接收数据并存储在名为的字符串中data
)