Как отправить данные UDP в Objective C с AsyncUdpSocket? - PullRequest
2 голосов
/ 20 апреля 2011

Я пытаюсь отправить небольшие данные по UDP, используя библиотеку AsyncUdpSocket .Есть много документов для TCP-соединения, но нет ни одного для UDP-соединения.

Я написал этот класс для отправки 5 байтов на удаленный хост, но похоже, что на самом деле ничего не происходит.Я наблюдаю за сетью, используя wireshark, но не вижу исходящих пакетов.Метод делегата "didSendDataWithTag" никогда не вызывается: (

Есть идеи, что я забыл?

#import "UDPController.h"

@implementation UDPController

- (id)init
{
    self = [super init];
    if (self) {
        socket = [[AsyncUdpSocket alloc] initWithDelegate:self];
    }
    return self;
}


- (void) sendUDPTest {
    NSLog(@"%s", __PRETTY_FUNCTION__);

    NSString * string = @"R/103";
    NSString * address = @"192.168.1.130";
    UInt16 port = 21001;
    NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];

    [socket sendData:data toHost:address port:port withTimeout:-1 tag:1];        
}


/**
 * Called when the datagram with the given tag has been sent.
 **/
- (void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag {
        NSLog(@"%s", __PRETTY_FUNCTION__);
}


- (void)dealloc
{
    [socket release];
    [super dealloc];
}

@end

ура

1 Ответ

1 голос
/ 06 июля 2011

Проблема здесь заключалась в том, что этот код не выполнялся в «цикле приложения», а основной процесс завершился до того, как AsyncUdpSocket успел отправить пакет.

Тот же код отлично работает, если он помещен в приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...