如何使用CocoaAsyncSocket读取数据?

时间:2012-06-05 18:23:34

标签: iphone ios sockets cocoaasyncsocket

我在appDelegate didFinishLaunchingWithOptions方法中创建了一个 TCP Socket连接。这很简单,我已成功连接到我的服务器。我在View中从服务器读取数据时遇到了很大困难。我一直在浏览如何使用 CocoaAsyncSocket 来适当地(逐步)读取数据的教程,但我还没有遇到任何有用的东西。

这是我appDelegate的代码:

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    socket = [[AsyncSocket alloc] initWithDelegate:self];
    [self connect];

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[tekMatrixViewController alloc] initWithNibName:@"tekMatrixViewController" bundle:nil] autorelease];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
} 

这是我的连接方法,位于appDelegate文件的底部:

- (void)connect 
{
    [socket connectToHost:@"9.5.3.3" onPort:11005 error:nil];
}

这很容易。我现在需要从服务器读取数据。我知道需要创建某种 NSData NSMutableData 对象来获取从服务器读取的数据的值。我刚刚找到任何指导我正确方向的教程或文档是非常失败的。有几个不同的读取函数,一些具有不同的参数,等等。如果有人能指出我的资源深入这个*(我是一个新手,毕竟= P)*我真的很感激 - 或者如果有人知道一个简单的方法来实现这个目标,并不介意在这里提供示例代码:D

这是我使用的图书馆:CocoaAsyncSocket。我使用了库AsyncSocket.hAsyncSocket.m

我已经被困在这几个小时了,所以任何帮助都会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:4)

这应该有效:

- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
    NSData *strData = [data subdataWithRange:NSMakeRange(0, [data length])];
    NSString *msg = [[NSString alloc] initWithData:strData encoding:NSUTF8StringEncoding];
    if(msg)
    {
        NSLog(@"RX:%@",msg);
    }
}

您还应该实现一些其他委托方法,例如:

- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err
{
    NSLog(@"error - disconnecting");
    //you'd probably want to start reconnecting procedure here...
}

- (void)onSocketDidDisconnect:(AsyncSocket *)sock
{
    NSLog(@"disconnected");
}

- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
    NSLog(@"connected");
}

编辑:如果内存对我有用,那么有一些文档以及库中的一些示例。