4

我在我的 appDelegate方法中创建了一个TCP 套接字连接。didFinishLaunchingWithOptions这很容易,我已经成功连接到我的服务器。在我的视图中从服务器读取数据时遇到很大困难。我一直在浏览有关如何使用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];
}

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

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

我已经坚持了几个小时,所以任何帮助将不胜感激。

谢谢!

4

1 回答 1

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");
}

编辑:如果我没记错的话,图书馆有一些文档和一些示例。

于 2012-06-05T18:49:08.800 回答