Problem Tutorial: This is the Message

Hello,

I read the tutorial "This is the Message" (http://www.macresearch.org/cocoa-scientists-part-xxix-message) and I'm trying implement client socket in my iphone simulator.

I run server in my mac (code downloaded, without changes) and run iphone client. However I don't find service (netServiceBrowser:didFindService: method not call).

Could anybody send me client xcode project for iphone about implementation this tutorial or find my error please?

Excuse me my horrible english. Thanks.

#import "ClientController.h"
#import "MTMessageBroker.h"
#import "MTMessage.h"
#import "AsyncSocket.h"

@interface ClientController ()

@property (readwrite, retain) NSNetServiceBrowser *browser;
@property (readwrite, retain) NSMutableArray *services;
@property (readwrite, assign) BOOL isConnected;
@property (readwrite, retain) NSNetService *connectedService;
@property (readwrite, retain) MTMessageBroker *messageBroker;

@end

@implementation ClientController

@synthesize browser;
@synthesize services;
@synthesize isConnected;
@synthesize connectedService;
@synthesize socket;
@synthesize messageBroker;

-(void)awakeFromNib {
services = [NSMutableArray new];
self.browser = [[NSNetServiceBrowser new] autorelease];
self.browser.delegate = self;
self.isConnected = NO;
[self search:nil];
}

-(void)dealloc {
self.connectedService = nil;
self.browser = nil;
self.socket = nil;
self.messageBroker.delegate = nil;
self.messageBroker = nil;
[services release];
[super dealloc];
}

-(IBAction)search:(id)sender {
[self.browser searchForServicesOfType:@"_cocoaforscientists._tcp." inDomain:@""];
NSLog(@"Searching: %@",services);
}

-(IBAction)connect:(id)sender {
NSNetService *remoteService = [services objectAtIndex:0];
remoteService.delegate = self;
[remoteService resolveWithTimeout:30];
NSLog(@"Connect");
}

-(IBAction)send:(id)sender {
NSData *data = [textView.text dataUsingEncoding:NSUTF8StringEncoding];
MTMessage *newMessage = [[[MTMessage alloc] init] autorelease];
newMessage.tag = 100;
newMessage.dataContent = data;
[self.messageBroker sendMessage:newMessage];
}

#pragma mark AsyncSocket Delegate Methods
-(void)onSocketDidDisconnect:(AsyncSocket *)sock {
NSLog(@"Socket disconnected");
}

-(BOOL)onSocketWillConnect:(AsyncSocket *)sock {
if ( messageBroker == nil ) {
[sock retain];
return YES;
}
return NO;
}

-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port {
MTMessageBroker *newBroker = [[[MTMessageBroker alloc] initWithAsyncSocket:socket] autorelease];
[sock release];
newBroker.delegate = self;
self.messageBroker = newBroker;
self.isConnected = YES;
NSLog(@"Did connect");
}

#pragma mark Net Service Browser Delegate Methods
-(void)netServiceBrowser:(NSNetServiceBrowser *)aBrowser didFindService:(NSNetService *)aService moreComing:(BOOL)more {
[services addObject:aService];
NSLog(@"Did find service:%@",[aService name]);
}

-(void)netServiceBrowser:(NSNetServiceBrowser *)aBrowser didRemoveService:(NSNetService *)aService moreComing:(BOOL)more {
[services removeObject:aService];
if ( aService == self.connectedService ) self.isConnected = NO;
}

-(void)netServiceDidResolveAddress:(NSNetService *)service {
NSError *error;
self.connectedService = service;
self.socket = [[[AsyncSocket alloc] initWithDelegate:self] autorelease];
[self.socket connectToAddress:service.addresses.lastObject error:&error];
}

-(void)netService:(NSNetService *)service didNotResolve:(NSDictionary *)errorDict {
NSLog(@"Could not resolve: %@", errorDict);
}

@end