标签: multicastsocket

Openwrt 允许多播流量

我在设备上运行 openwrt,并有一个 python 脚本,用于侦听和打印以屏幕 239.2.1.1 上的多播流量。

但是,屏幕上没有打印任何内容,我相信这是防火墙问题。如何确保运行 openwrt 的 LAN 接口允许多播流量?

linux multicast multicastsocket

5
推荐指数
1
解决办法
1万
查看次数

使用多播套接字的 ssdp 发现 upnp 设备

我正在尝试使用多播套接字发现网络中的 UPnP 设备,但是,我似乎多次获得同一设备。这里的发现代码有什么问题。

我得到的结果如下

HTTP/1.1 200 OK 缓存控制:max-age = 60 EXT:位置:http://10.2.1.89 :5200/Printer.xml 服务器:网络打印机服务器 UPnP/1.0 V4.00.01.31 DEC-23-2014 ST :uuid:16a65700-007c-1000-bb49-30cda79cac19 USN:uuid:16a65700-007c-1000-bb49-30cda79cac19

HTTP/1.1 200 OK 缓存控制:max-age = 60 EXT:位置:http://10.2.1.87 :5200/Printer.xml 服务器:网络打印机服务器 UPnP/1.0 V4.00.01.31 DEC-23-2014 ST :uuid:16a65700-007c-1000-bb49-30cda79b5419 USN:uuid:16a65700-007c-1000-bb49-30cda79b5419

使用的代码如下

namespace DevManager
{
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;

    public class UPnPDevDiscovery 
    {
        /// <summary>
        /// Device search request
        /// </summary>
        private const string searchRequest = "M-SEARCH * HTTP/1.1\r\nHOST: {0}:{1}\r\nMAN: \"ssdp:discover\"\r\nMX: {2}\r\nST: {3}\r\n"; …
Run Code Online (Sandbox Code Playgroud)

c# upnp multicastsocket ssdp

5
推荐指数
1
解决办法
5300
查看次数

使用相同的套接字发送和接收 UDP 多播数据包

我找不到一个工作示例,所以我将发布一个问题(让我们看看是否可以将其简化为 MVP 代码示例)。所以,我需要做 mdns 查询,我可以使用两个套接字(一个用于发送/第二个用于接收),但到目前为止我还无法使其与单个套接字一起工作。

所以我正在执行的步骤是:

枚举主机上的所有接口地址。然后对于每个主机:

  1. 创建非阻塞 UDP 套接字
  2. bind() 到接口地址:5353 或多播组地址(这些都会导致读取或写入失败)
  3. 将 IP_MULTICAST_IF 设置为本地接口
  4. IP_ADD_MEMBERSHIP 到多播组
  5. 在 kqueue 中添加用于读/写的套接字

因此,根据我在第 2 步中执行的操作,读取或写入失败:

  1. 如果我将套接字绑定到多播组,我会从 kqueue 收到读取通知并可以读取数据包,但是当我从 kqueue 收到写入通知并尝试写入时,它会失败并显示 errno 49
  2. 如果我将套接字绑定到接口地址,我可以发送数据包,但没有读取通知从 kqueue 到达

那么我需要绑定到哪个地址呢?另外,由于IP_ADD_MEMBERSHIP参数ip_mreq有接口字段,我真的需要IP_MULTICAST_IF吗?

c sockets posix multicast multicastsocket

3
推荐指数
1
解决办法
806
查看次数

Objective-C - 以编程方式确定iPod touch的IP地址

我正在为几台iPod设备编写Objective-C编程,我对此感到疑惑.我正在开发一个利用服务器 - 客户端模型的应用程序,我正在使用带有C套接字的UDP协议.是否有一个课程允许我确定iPod设备的IP地址?在谷歌搜索其他论坛后,我还没有找到任何东西.显然这个命令不起作用,但像ipAddress = self.ip这样的东西就是我想到的.我正在设置组播C套接字,我正在尝试做一个类似于ping命令的解决方法,这显然在objective-C中不存在,或者据我所知(这是有限的,因为我只是编程在至少从今年夏天开始的目标-C中.有什么建议或提示吗?

ip multicast objective-c ip-address multicastsocket

2
推荐指数
1
解决办法
5625
查看次数

IPv6 组播示例

我已经搜索了如何实现一个简单的 ipv6 多播示例的示例,但是我只找到了使用 ipv4 的示例。

任何人都可以提供一个简单的“helloworld”ipv6 多播示例吗?

java multicast ipv6 multicastsocket

2
推荐指数
1
解决办法
5406
查看次数

Java MulticastSocket导致空指针异常

我正在尝试使多播套接字在“服务器”应用程序上工作,该应用程序会将信息吐到一堆Android手机上。负责设置套接字并发送一些数据的代码段如下:

    private MulticastSocket multisocket;
    private DatagramPacket packet;
    private InetAddress addr;
    private Question question;

    byte[] buffer = "Some text to be sent".getBytes();
    packet = new DatagramPacket(buffer, buffer.length);

    try {
        addr = InetAddress.getByName("228.5.6.7");
        multisocket = new MulticastSocket(4446);
        multisocket.joinGroup(addr);

    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        System.out.println("Sending...");
        multisocket.send(packet); // This is the line it dies on...     
        System.out.println("Text sent, closing socket");
        multisocket.close();

    } catch (IOException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

发生的情况是,它到达了该multisocket.send(packet);行并死于以下堆栈跟踪信息:

Exception in thread "SendThread" java.lang.NullPointerException: null address || null buffer …
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception multicastsocket

0
推荐指数
1
解决办法
5578
查看次数