我正在尝试使用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
欢呼声
答案 0 :(得分:1)
这里的问题是这个代码没有在“应用程序循环”中运行,并且主要在AsyncUdpSocket有时间发送数据包之前退出。
如果将相同的代码放入应用程序中,则相同的代码可以正常工作。