Я пытаюсь начать и создать простой UDP-сервер и клиент, используя CocoaASyncSocket. Я почти воспроизвел код в примерах из здесь
ОБНОВЛЕНИЕ:
Я пытался запустить предоставленные примеры, но они, похоже, не работают с указанным адресом хоста + портом. Что бы я заполнил для них (на стороне клиента), если мой клиент + сервер находятся на одном и том же Wi-Fi?
Мой сервер:
-(void)startServer{
udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *error = nil;
if (![udpSocket bindToPort:PORT error:&error])
{
NSLog(@"Error starting server (bind): %@", error);
return;
}
if (![udpSocket beginReceiving:&error])
{
[udpSocket close];
NSLog(@"Error starting server (recv): %@", error);
return;
}
NSLog(@"Udp Echo server started on %@:%i",[udpSocket localHost_IPv4],[udpSocket localPort]);
isRunning = YES;
}
Мой клиент:
-(void)setupSocket{
udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *error = nil;
if (![udpSocket bindToPort:HOST_PORT error:&error])
{
NSLog(@"Error binding: %@", error);
return;
}
if (![udpSocket beginReceiving:&error])
{
[udpSocket close];
NSLog(@"Error receiving: %@", error);
return;
}
NSLog(@"ready");
}
- (IBAction)send:(id)sender
{
NSString *msg = @"testerrrr";
NSData *data = [msg dataUsingEncoding:NSUTF8StringEncoding];
[udpSocket sendData:data toHost:HOST_IP port:HOST_PORT withTimeout:-1 tag:0];
NSLog(@"sent message to server");
}
Я не верю, что моя проблема заключается в инициализации сервера или сокета, но, возможно, в том, какие у меня выбраны IP + PORT. Прямо сейчас я запускаю сервер на симуляторе iOS и клиент на реальном устройстве. При отправке данных с устройства я вижу, что пакеты уходят, но сервер их не получает.
Я настроил его для привязки порта 1234, и что клиент отправляет его на адрес сервера, который я получил от «whatismyip.com». Я также пытался поменять местами роли, но все равно безуспешно.
Кроме того, когда я попытался отправить данные самому себе (например, сервер -> сервер), это сработало, но между двумя не повезло!
Это кажется довольно простой задачей, но не удалось заставить ее работать. Цените помощь!