Я пытаюсь внедрить приложение-первооткрыватель IP для платформы микрочипов. Я использую GCDAsyncSocket для этого. ЕСЛИ я отправляю конкретное сообщение, все интересующие устройства будут отвечать своими сетевыми учетными данными.GCDAsyncsocket для всех IP-адресов
С GCDAsyncSocket, если я использую определенный IP-адрес, я могу получить ответ. Но я не уверен, как передавать это сообщение всем IP-адресам в сети.
My Code: udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate: self delegateQueue: dispatch_get_main_queue()];
- (void)setupSocket
{
NSError *error = nil;
if (![udpSocket bindToPort:0 error:&error])
{
[self logError:FORMAT(@"Error binding: %@", error)];
return;
}
if (![udpSocket beginReceiving:&error])
{
[self logError:FORMAT(@"Error receiving: %@", error)];
return;
}
[udpSocket enableBroadcast:YES error:&error];
if (error != nil)
{
NSLog(@"Error enableing broadcast: %@", [error description]);
return;
}
[self logInfo:@"Ready"];
}
- (IBAction)send:(id)sender
{
NSString *host = addrField.text;
NSError *error = nil;
NSData *data = [msg dataUsingEncoding:NSUTF8StringEncoding];
[udpSocket sendData:data toHost:host port:port withTimeout:-1 tag:tag];
[self logMessage:FORMAT(@"SENT (%i): %@", (int)tag, msg)];
tag++;
}
Теперь, как я могу заставить его отправлять все 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);
И я хочу сделать то же самое на это приложение. Цените некоторую помощь.
Что было для вас? Должно ли оно быть 255.255.255.255? – user523234
Ну, есть несколько адресов хостов. Я хочу передать всем, чтобы все аппаратные устройства, которые идентифицировали сообщение, ответят обратно. Мой ноутбук, который отправляет udp через симулятор iphone, скажет 192.168.2.1. Тогда есть несколько устройств, таких как 192.168.2.3, 2.34.2.101 и т. Д., На которые я хотел бы получить ответ. В настоящее время, если я укажу один адрес хоста (скажем, 192.168.2.34), я могу получить ответ. – aVC
Я основывал свой комментарий на вашем java-коде, который отправил сообщение на адрес 255.255.255.255. Отправка дейтаграммы UDP на этот адрес доставляет сообщение любому хосту в сегменте локальной сети. – user523234