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

您需要将格式化的时间字符串转换为数据,就像您已经对响应所做的那样,只要流的另一端只是期望文本。直接使用 -UTF8String 方法通常比使用 NSData 更容易:

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

最后,您在 NSStream 上发送原始字节。NSData 很明显如何做到这一点,但是如果您使用字符字节,则需要获得确切的 c 字符串长度——因此您可以使用 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 回答