2016-05-06 14 views
0

Ich verwende NSOutputStream, um Daten vom Client (IOS-Gerät) an den Server (PC-Gerät) auszugeben. Ich kann Daten erfolgreich an den Server senden, ich möchte nur die aktuelle Zeit mit NSOutputStream hinzufügen.Verwenden von NSOutputStream zum Ausgeben der aktuellen Uhrzeit an den Server

Wie kann ich die aktuelle Zeit mit NSOutputStream senden?

Hier ist mein Code

- (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]]; 
} 

Antwort

1

Sie müssen die formatierte Zeitzeichenfolge, um Daten zu konvertieren, die Art und Weise Sie bereits mit der Antwort zu tun, solange die andere Seite des Baches nur Text erwartet wird. Es kann oft einfacher, die -UTF8String Methode zu verwenden, sondern direkt NSData mit:

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

Am Ende Sie senden auf einem NSStream rohes Bytes über. NSData ist offensichtlich, wie dies zu tun ist, aber Sie müssen die genaue C-Zeichenfolge Länge erhalten, wenn Sie Zeichen Bytes verwenden - so können Sie die UTF8String und strlen() davon oder die lengthOfBytesUsingEncoding-Methode wie oben verwenden.

+0

Dank für Ihre Hilfe danken. Ehrlich gesagt, verstehe ich immer noch nicht, wie Sie Ihren code verwenden, um currentTime auszugeben, ähnlich wie bei der Antwort –

+0

Der Aufruf '' '[formatter stringFromDate: currentTime]' '' gibt eine NSString-Instanz zurück, die Sie dann UTF8String aufrufen können , etc. –

0

ist die komplette Antwort

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]