|
此文章由 jacey 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 jacey 所有!转贴必须注明作者、出处和本声明,并保持内容完整
再init对象时还能发送UDP包,到了调用的时候就没反应了。function跑起来没问题,但是asyncUdpSocket的对象就是不发送UDP包。
Stackoverflow上都没人搭理我。
https://groups.google.com/forum/ ... csocket/GMLVDjzinNQ CocoaAsyncSocket 的google Group也没人回复。
抓狂了!!!!
.h
#import <Foundation/Foundation.h>
#import "AsyncUdpSocket.h"
@interface Engine : NSObject{
AsyncUdpSocket *asyncUdpSocket;
}
@property (atomic, strong) AsyncUdpSocket *asyncUdpSocket;
- (id) init;
- (BOOL) startSession;
- (void) doSomething;
@end
.m
#import "Engine.h"
@implementation Engine
- (id) init {
[self doSomething]; //<-----<< It can send ip packet out
self = [super init];
[self doSomething]; //<-----<< It can send ip packet out, with wrong bind source port
if (self){
}
return self;
}
- (BOOL) startSession{
[self doSomething]; //<-----<< It won't send any ip packet out
[self oxox];
return YES;
}
- (void) oxox{
[self doSomething]; //<-----<< It won't send any ip packet out
}
- (void) doSomething{
NSError *socketError=nil;
asyncUdpSocket = [[AsyncUdpSocket alloc] initWithDelegate:self];
if (![asyncUdpSocket bindToPort:7701
error:&socketError]){
NSLog(@"RASEngine: Bind to Port fail");
}
[asyncUdpSocket enableBroadcast:NO error:&socketError];
uint8_t signalBytes[] = {0x07, 0x07, 0x01, 0x06, 0x12, 0x34, 0x56, 0x78};
NSData *signalData = [NSData dataWithBytes:signalBytes length:8];
[asyncUdpSocket sendData:signalData //<--------<< It is called every time, but doesn't send anything out.
toHost "192.168.16.18"
port:9902
withTimeout:-1
tag:0];
}
#pragma mark -
#pragma mark AsyncUdpSocket Delegate for UDP
- (void)onUdpSocket AsyncUdpSocket *)sock didSendDataWithTag long)tag{
NSLog(@"UDP Engine: onUdpSocket:didSendDataWithTag:%ld", tag);
}
- (void)onUdpSocket AsyncUdpSocket *)sock didNotSendDataWithTag long)tag dueToError NSError *)error{
NSLog(@"UDP Engine: onUdpSocket:didNotSendDataWithTag:%ld", tag);
}
@end |
|