cocoa socket client

 加入协议的头文件。创建客户端类
#import <Foundation/Foundation.h>
// do_client.m
#import "do_common.h"
@interface DOClient : NSObject <ServerProtocol>
{
    id proxy;
    NSNotificationCenter *dnc;
}
- (void)defaultNotificationHandler:(NSNotification *)notification;
- (NSString *)whoAreYou;
- (void)cleanup;
- (void)connect;
- (void)doTest;
@end
// client
@implementation DOClient
-(id)init
{
    self = [super init];
    return self;
}
- (void)dealloc
{
    [self cleanup];
    [super dealloc];
}
- (void)cleanup
{
    if (proxy) {
        NSConnection *connection = [proxy connectionForProxy];
        [connection invalidate];
        [proxy release];
        proxy = nil;
    }
}
- (NSString *)whoAreYou
{
    return @"I am a DO client.";
}
- (void)connect
{
    NSSocketPort *port;
    NSConnection *connection;
    port = [[NSSocketPort alloc] initRemoteWithTCPPort:DO_DEMO_PORT
                                                  host:@DO_DEMO_HOST];
    connection = [NSConnection connectionWithReceivePort:nil sendPort:port];
    [connection setReplyTimeout:5];
    [connection setRequestTimeout:5];
    [port release];
NS_DURING
    proxy = [[connection rootProxy] retain];
    [proxy setProtocolForProxy:@protocol(ClientProtocol)];
    [proxy helloFromClient:self];
NS_HANDLER
    [self cleanup];
NS_ENDHANDLER
}
- (void)doTest
{
    [proxy setA:4.0];
    [proxy setB:9.0];
    float result = [proxy getSum];
    NSLog(@"%f", result);
}
@end


// client main program
int main(int argc, char **argv)
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSRunLoop *runloop = [NSRunLoop currentRunLoop];
    DOClient *client = [[DOClient alloc] init];
    [client connect];
    [client doTest];
   
    [runloop run];
    [client release];
    [pool release];
    exit(0);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值