【发布时间】:2013-12-21 20:31:31
【问题描述】:
我想发现局域网中是否有一台服务器正在侦听特定端口,其 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 know
int 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 地址广播?任何帮助将不胜感激。
【问题讨论】:
标签: ios iphone networking broadcast