2016-05-07 3 views
0

Я отправить строку на мой сервер (PHP) на код ниже:сервер не получает данные отправить по прошивкой

NSString* str = @"teststring"; 
    NSData* dataToSend = [str dataUsingEncoding:NSUTF8StringEncoding]; 

    uint8_t *dataBytes = (uint8_t *)[dataToSend bytes]; 
    uint64_t length = dataToSend.length; 

    [outputStream write:dataBytes maxLength:length]; 

Проблема с этим кодом, в том, что я не получаю строка (сервер распознает, что пользователь вводит, и я получаю рукопожатие в консоли Xcode). Я тестирую другие коды и отлично работаю (получаю данные), но в это время я стараюсь самостоятельно. Я считаю, что я не конвертирую сообщение в соответствующий формат, и поэтому сообщение не получено, верно? Если да, то как я могу преобразовать это сообщение в соответствующий формат?

ответ

1

Вы уверены, что в потоке вывода есть место для записи большого количества байтов в тот момент, когда вы вызываете метод write:...? Вы должны вызывать только write:... в потоке вывода из вашего stream:handleEvent: делегировать метод, и только если код события NSStreamEventHasSpaceAvailable.

И вы должны проверить результат, чтобы узнать, сколько байтов было написано. Если количество байтов меньше, чем вы отправили, вы должны окупить оставшиеся данные для повторной отправки позже, всякий раз, когда ваш метод stream:handleEvent: делегируется.

Для получения дополнительной информации см .: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Streams/Articles/WritingOutputStreams.html

Смежные вопросы