2016-09-28 11 views
0

アンドロイドサーバーからiOSクライアントに画像ファイルを送信します。私は、迅速な言語とソケットプログラミング(IPポート)を使用しています。接続があります。私は文字列データを送信/取得しますが、画像ファイルを取得できません。迅速なイメージファイルを取得するにはどうすればいいですか?アンドロイドサーバーからiOSに写真をアップロード

i want to make like this app

 if aStream == self.inputStream{ 
      var buffer: UInt8 = 0 
      var len: Int! 


      while (inputStream?.hasBytesAvailable != nil){ 
       len = inputStream?.read(&buffer, maxLength: 2048) 

       if len > 0{ 

        var output = NSData(bytes: &buffer, length: len) 

        if output != nil{ 

         var img = UIImage(data: output) //Error !!! 

        } 
       } 
      } 
     } 
+0

実際のコードを追加できますか? –

+0

私は自分の質問を編集しました。 –

答えて

0

InputStream一度にすべてのデータを取ることができません。したがって、hasBytesAvailableプロパティがfalseになるまでNSMutableDataオブジェクトを使って繰り返し全体にバイトを追加する必要があります。つまり、バイトが残っておらず、必要なすべてのイメージデータが得られます。下のコードは途中でSwift 3.0です。

var data = NSMutableData() 

fileprivate func handleIncomingMessage(_ stream:Stream) { 
    if stream === inputStream { 
     let bufferSize = 1024 
     var buffer = Array<UInt8>(repeating: 0, count: bufferSize)) 
     while(inputStream.hasBytesAvailable) { 
      let bytesRead = inputStream.read(&buffer, maxLength: bufferSize) 
      if bytesRead >= 0 { 
       data.append(&buffer, length: bytesRead) 
      }else { 
       if bytesRead == -1 { 
        //TODO: Server closed. 
        ITLog.info("Server closed") 
       } 
      } 
     } 

     // `NSMutableData` object now has valid image bytes. 
     // Create an UIImage with `data` object. 
     let image = UIImage(data: data) 
     clearSocketData() 

    } 
} 

fileprivate func clearSocketData() { 
    data = NSMutableData() 
} 
関連する問題