ios – 如何使用GCDAsyncUdpSocket在LAN中广播?

ios – 如何使用GCDAsyncUdpSocket在LAN中广播?,第1张

概述我想发现是否有一个服务器,它正在侦听具有未知IP地址的局域网中的特定端口 GCDAsyncUdpSocket.我将在局域网中广播一些消息,如果服务器存在,它将反馈消息然后我将知道服务器的IP地址. 现在我尝试使用以下代码来完成工作: udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch 我想发现是否有一个服务器,它正在侦听具有未知IP地址的局域网中的特定端口 GCDAsyncUdpSocket.我将在局域网中广播一些消息,如果服务器存在,它将反馈消息然后我将知道服务器的IP地址.

现在我尝试使用以下代码来完成工作:

udpSocket = [[GcdasyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];if (![udpSocket bindtoport:18686 error:&error]){    [self logError:FORMAT(@"Error binding: %@",error)];    return;}if (![udpSocket beginReceiving:&error]){    [self logError:FORMAT(@"Error receiving: %@",error)];    return;}Nsstring *host = @"192.168.2.139"; // server IP i kNowint port = 8585;Nsstring *message = @"Hello";NSData *data = [msg dataUsingEnCoding:NSUTF8StringEnCoding];[udpSocket sendData:data toHost:host port:port withTimeout:-1 tag:tag];

如果我将主机IP设置为服务器IP,它可以,服务器将响应.但我想广播找到服务器IP,我尝试使用“192.168.2.0”,“192.168.2.1”,“192.168.2.255”,“255.255.255.255”,以上所有地址都不能广播.

我想知道哪个IP地址可用于在192.168.2.*中在LAN中广播,如果不知道LAN IP域,那么要广播哪个IP地址?任何帮助将不胜感激.

解决方法 我检查了GcdasyncUdpSocket.h并找到了名为 – (BOol)的函数enablebroadcast:(BOol)标志错误:(NSError **)errPtr;我将以下内容添加到setupSocket中

if (![udpSocket enablebroadcast:YES error:&error]) {        [self logError:FORMAT(@"Error enablebroadcast:%@",error)];        return;}

广播工作……

在我的问题上,我检查了192.168.2.* LAN广播IP是192.168.2.255,未知的LAN广播IP是255.255.255.255.

我不知道为什么我们需要在GcdasyncUdpSocket中启用广播来使用广播IP.希望有一天这会有所帮助.

总结

以上是内存溢出为你收集整理的ios – 如何使用GCDAsyncUdpSocket在LAN中广播?全部内容,希望文章能够帮你解决ios – 如何使用GCDAsyncUdpSocket在LAN中广播?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1018648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存