2016-09-28 13 views
0

我想从android服务器发送图像文件到iOS客户端。我正在使用swift语言和套接字编程(ip-port)。有连接。我发送/获取字符串数据,但我无法获取图像文件。我怎样才能得到迅速的一面图像文件?从android服务器获取照片到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不能拿一次所有数据;所以你需要在整个迭代过程中将字节附加到一个NSMutableData对象中,直到hasBytesAvailable属性为false。这意味着你没有剩余字节,你得到了你需要的所有图像数据。顺便说下,下面的代码是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() 
}