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ファイルの下部にあるconnectメソッドは次のとおりです。

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

それは簡単な部分でした。サーバーからデータを読み取る必要があります。サーバーから読み取ったデータの値を取得するには、ある種のNSDataまたはNSMutableDataオブジェクトを作成する必要があることを知っています。私は正しい方向を示すチュートリアルやドキュメントを見つけるのに非常に失敗しました。いくつかの異なる読み取り関数があり、いくつかは異なるパラメーターを持つなどです。誰かがこれを深く掘り下げるリソースを私に指摘できれば*(私は初心者です、結局のところ= 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 に答える