如何使用AsyncUdpSocket在Objective C中发送UDP数据?

时间:2011-04-20 18:59:06

标签: objective-c udp

我正在尝试使用AsyncUdpSocket library通过UDP发送一些小数据。 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 个答案:

答案 0 :(得分:1)

这里的问题是这个代码没有在“应用程序循环”中运行,并且主要在AsyncUdpSocket有时间发送数据包之前退出。

如果将相同的代码放入应用程序中,则相同的代码可以正常工作。