使用NSOutputStream将当前时间输出到服务器

时间:2016-05-06 20:25:02

标签: objective-c uibutton nsoutputstream

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

2 个答案:

答案 0 :(得分:1)

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

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

最后,您将在NSStream上发送原始字节。 NSData显然是如何做到的,但如果使用字符字节,则需要获得精确的c字符串长度 - 所以你可以使用它的UTF8String和strlen(),或者如上所述的lengthOfBytesUsingEncoding方法。

答案 1 :(得分: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]