BLIP/Demo/BLIPEchoServer.m
author Jens Alfke <jens@mooseyard.com>
Wed Apr 29 13:29:31 2009 -0700 (2009-04-29)
changeset 31 1d6924779df7
parent 3 76f302097a75
child 63 5e4855a592ee
permissions -rw-r--r--
More work on Bonjour classes. They now support registering services.
     1 //
     2 //  BLIPEchoServer.m
     3 //  MYNetwork
     4 //
     5 //  Created by Jens Alfke on 5/24/08.
     6 //  Copyright 2008 Jens Alfke. All rights reserved.
     7 //
     8 
     9 #import "BLIPEchoServer.h"
    10 #import "MYNetwork.h"
    11 
    12 
    13 @implementation BLIPEchoServer
    14 
    15 
    16 - (id) init
    17 {
    18     self = [super init];
    19     if (self != nil) {
    20         _listener = [[BLIPListener alloc] initWithPort: 12345];
    21         _listener.delegate = self;
    22         _listener.pickAvailablePort = YES;
    23         _listener.bonjourServiceType = @"_blipecho._tcp";
    24         [_listener open];
    25         NSLog(@"%@ is listening...",self);
    26     }
    27     return self;
    28 }
    29 
    30 - (void) dealloc
    31 {
    32     [_listener close];
    33     [_listener release];
    34     [super dealloc];
    35 }
    36 
    37 - (void) listener: (TCPListener*)listener failedToOpen: (NSError*)error
    38 {
    39     NSLog(@"** %@ failed to open: %@",self,error);
    40 }
    41 
    42 - (void) listener: (TCPListener*)listener didAcceptConnection: (TCPConnection*)connection
    43 {
    44     NSLog(@"** %@ accepted %@",self,connection);
    45     connection.delegate = self;
    46 }
    47 
    48 - (void) connection: (TCPConnection*)connection failedToOpen: (NSError*)error
    49 {
    50     NSLog(@"** %@ failedToOpen: %@",connection,error);
    51 }
    52 
    53 - (void) connection: (BLIPConnection*)connection receivedRequest: (BLIPRequest*)request
    54 {
    55     NSLog(@"***** %@ received %@",connection,request);
    56     [request respondWithData: request.body contentType: request.contentType];
    57 }
    58 
    59 
    60 @end
    61 
    62 
    63 int main( int argc, const char **argv )
    64 {
    65     NSAutoreleasePool *pool = [NSAutoreleasePool new];
    66     BLIPEchoServer *listener = [[BLIPEchoServer alloc] init];
    67     [[NSRunLoop currentRunLoop] run];
    68     [listener release];
    69     [pool drain];
    70 }