动态查找服务器IP

时间:2014-02-24 18:04:20

标签: ios ping broadcast arp

我有一个C#服务器,以及一个通过wifi工作的Objective-c客户端。一切正常,但现在我想检测本地网络上的所有计算机(或至少是运行我的服务器的计算机),而不是手动输入IP。 我已经阅读了一些有关它的帖子,他们建议做广播来查找IP或读取ARP表或者ping xx.xx.xx.0到255之间的每个IP地址。

这样做的最佳方法是什么?我真的不知道从哪里开始或如何做到这一点。你有一些教程或例子吗?我在objective-c中找不到任何有用的东西。我不想使用Bonjour服务,因为我的服务器在Windows上工作。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

在服务器上的特定端口上实现回显系统,例如8070

我使用以下代码完成了对给定端口的消息广播。

broadCastSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
if ([broadcastSocket enableBroadcast:true error:&error] == false) {
    NSLog(@"Failed to enable broadcast, Reason %@:",[error userInfo]);
}
NSData *data = [QueryString dataUsingEncoding:NSUTF8StringEncoding];
[broadcastSocket sendData:data toHost:@"255.255.255.255" port:8070 withTimeout:-1 tag:5];

您的所有服务器都将在端口上接收数据并回显系统对给定端口的回复。现在你可以听到那些端口并获取将要回复的所有服务器的ip。当然,如果服务器是你的,这个技巧只会起作用。
注意:: 我使用的是GCDAsyncSocket图书馆,但您可以随意使用。

答案 1 :(得分:0)

使用您可以在Refereces->Right Click -> Add References -> COM tab -> Bonjour SDK or Apple Bonjour SDK的Visual Studio中找到的Bonjour SDK。然后,您可以使用Bonjour SDK的方法来扫描Intranet。