2016-05-07 3 views
0

により送信データを受信しません。Serverは、私は以下のコードで私のサーバー(PHP)に文字列を送るよiOSの

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:...メソッドを呼び出すときに出力ストリームにそのバイト数を書き込むスペースがあることを確認してください。 stream:handleEvent:デリゲートメソッドの出力ストリームには、NSStreamEventHasSpaceAvailableの場合にのみ、write:...を出力ストリームに呼び出す必要があります。

実際に書き込まれたバイト数を確認するには、結果を確認する必要があります。送信されたバイト数よりも少ない場合は、stream:handleEvent:デリゲートメソッドが再度呼び出されるたびに、後で再送信するように残りのデータをエンキューする必要があります。

詳しくは、 https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Streams/Articles/WritingOutputStreams.html

関連する問題