使用 NSOutputStream 将当前时间输出到 Server

Using NSOutputStream to output the current time to the Server

我正在使用 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]];
}

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

通常更容易
[outputStream write:[string UTF8String]
          maxLength:[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];

最后,您将通过 NSStream 发送原始字节。 NSData 很明显如何做到这一点,但如果您使用字符字节,则需要获得准确的 c 字符串长度——因此您可以使用 UTF8String 和 strlen() ,或上面的 lengthOfBytesUsingEncoding 方法。

这是完整的答案

    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]