Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GCDAsyncsocket广播到所有IP_Java_Ios_Gcdasyncsocket - Fatal编程技术网

Java GCDAsyncsocket广播到所有IP

Java GCDAsyncsocket广播到所有IP,java,ios,gcdasyncsocket,Java,Ios,Gcdasyncsocket,我正在尝试为微芯片平台实现一个IP发现程序。我过去经常这样做。如果我发送一条特定消息,所有感兴趣的设备都将使用其网络凭据进行响应 使用GCDAsyncSocket,如果我使用特定的IP,我可以得到响应。但我不知道如何将此消息广播到网络中的所有IP 我的代码: udpSocket=[[GCDAsyncUdpSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_main_queue()] 现在,我如何使它发送到所有IP而不是只有一

我正在尝试为微芯片平台实现一个IP发现程序。我过去经常这样做。如果我发送一条特定消息,所有感兴趣的设备都将使用其网络凭据进行响应

使用GCDAsyncSocket,如果我使用特定的IP,我可以得到响应。但我不知道如何将此消息广播到网络中的所有IP

我的代码: udpSocket=[[GCDAsyncUdpSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_main_queue()]

现在,我如何使它发送到所有IP而不是只有一个IP?在最初的PC java应用程序中,我可以看到如下内容

socket = new DatagramSocket(30303);
            socket.setBroadcast(true);
            InetAddress address = InetAddress.getByName("255.255.255.255");
            packet = new DatagramPacket(str.getBytes(),
                    str.length(), address, 30303);

            socket.send(packet);

我想在这个应用程序上做同样的事情。感谢您的帮助。

我在ios应用程序中使用了相同的套接字库,用于相同的目的(在网络上搜索设备) 我使用的代码是

_broadcastSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
if ([_broadcastSocket enableBroadcast:YES error:&error] == false) {
        NSLog(@"Failed to enable broadcast, Reason : %@",[error userInfo]);
    }
[_broadcastSocket sendData:data toHost:@"255.255.255.255" port:5944 withTimeout:-1 tag:5];

使用NSData对象调用socket的sendata函数将向网络上侦听给定端口的所有ip广播数据。

您的主机值是多少?应该是255.255.255.255吗?嗯,有多个主机地址。我想向所有人广播,这样所有识别消息的硬件单元都会响应。我的笔记本电脑通过iphone模拟器发送udp,比如说192.168.2.1。然后有多个设备,如192.168.2.3、2.34、2.101等,我希望从中获得响应。目前,如果我指定一个主机地址(比如192.168.2.34),我可以得到响应。我的评论基于您给定的java代码,该代码向255.255.255.255发送了一条消息。将UDP数据报发送到此地址会将消息传递到本地网段上的任何主机。如果我使用255.255.255.255作为主机地址,则不会收到响应。
_broadcastSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
if ([_broadcastSocket enableBroadcast:YES error:&error] == false) {
        NSLog(@"Failed to enable broadcast, Reason : %@",[error userInfo]);
    }
[_broadcastSocket sendData:data toHost:@"255.255.255.255" port:5944 withTimeout:-1 tag:5];