0

NSOutputStream を使用して、クライアント (IOS デバイス) からサーバー (PC デバイス) にデータを出力しています。サーバーにデータを正常に送信できます。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]];
}
4

2 に答える 2

1

ストリームの反対側がテキストを期待している限り、フォーマットされた時刻文字列をデータに変換する必要があります。これは、既に応答で行っている方法です。多くの場合、NSData を使用する代わりに -UTF8String メソッドを直接使用する方が簡単です。

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

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

于 2016-05-06T20:41:39.813 に答える
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]
于 2016-05-09T14:24:46.787 に答える