2016-05-06 7 views
0

NSOutputStreamを使用して、クライアント(IOSデバイス)からサーバー(PCデバイス)にデータを出力しています。 データをサーバーに正常に送信できます。ただ、NSOutputStreamを使用して現在の時刻を追加するだけです。NSOutputStreamを使用してサーバーに現在時刻を出力する

NSOutputStreamを使用して現在時刻を送信するにはどうすればよいですか?

は、ここでは、データにフォーマットされた時刻文字列、すでに限り、ストリームの他の側面は、テキストだけを期待しているように、応答でやっている方法を変換する必要が私のコード

- (IBAction)button1:(id)sender { 

    NSString *response = @" Today's Sunny \n "; 
    NSData *data = [[NSData alloc] initWithData:[response dataUsingEncoding:NSASCIIStringEncoding]]; 
    [outputStream write:[data bytes] maxLength:[data length]]; 

    NSDate *currentTime = [NSDate date]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; 
    [formatter setDateFormat:@"hh:mm:ss"]; 
    _timer.text = [formatter stringFromDate:currentTime]; 
    //_timer is A label just for testing 
    ///I'm trying to use outputStream to output currentTime like this 
    /// [outputStream write:[currentTime bytes] maxLength:[CurrentTime length]]; 
} 

答えて

1

です。多くの場合、代わりのNSDataを使用しての直接-UTF8Stringメソッドを使用する方が簡単になります

[outputStream write:[string UTF8String] 
      maxLength:[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]]; 

最後に、あなたがNSStreamに生のバイト上で送信しています。 NSDataはそれを行う方法は明白ですが、文字バイトを使用している場合は正確なC文字列の長さを取得する必要があります。そのため、UTF8Stringとstrlen()または上記のlengthOfBytesUsingEncodingメソッドを使用できます。

+0

あなたの助けをいただき、ありがとうございます。正直なところ、私はあなたのコードを使用してcurrentTimeを出力する方法を理解していません。 –

+0

'' '[formatter stringFromDate:currentTime]' ''呼び出しはNSStringインスタンスを返します。等 –

0

ここで完全な答えだ

NSDate *currentTime = [NSDate date]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; 
    [formatter setDateFormat:@"hh:mm:ss"]; 
    NSString *timeString = [formatter stringFromDate:currentTime]; 
    [outputStream write:[timeString UTF8String] 
       maxLength:[timeString lengthOfBytesUsingEncoding:NSUTF8StringEncoding] 
関連する問題