NSInputStream Buffer Size

I am trying to use NSInputStream to receive data through a TCP socket connection. On the server side, I send the size of the data before sending the data . on the client side of iOS, I need to extract the first 4 bytes from NSInputStream, because I need to check if the data size is fully received, but I have a problem with it:

...
case NSStreamEvent.HasBytesAvailable:
 if ( aStream == inputstream){    
   while (inputstream.hasBytesAvailable){                    
      var readBufferRef         = UnsafeMutablePointer<UnsafeMutablePointer<UInt8>>()
      var readBufferLengthRef   = 0
      let readBufferIsAvailable = inputstream.getBuffer(readBufferRef, length: &readBufferLengthRef)
...
    }
}
break

After receiving data, readBufferLengthRef is always 0.

How can it be?

And how can I get the size of the NSInputStream buffer?

UPD:

the code:

case NSStreamEvent.HasBytesAvailable:
            NSLog("HasBytesAvaible")
            var buffer = [UInt8](count: 1024, repeatedValue: 0)
            if ( aStream == inputstream){

                while (inputstream.hasBytesAvailable){

                    var readBufferRef: UnsafeMutablePointer<UInt8> = nil
                    var readBufferLengthRef = 0
                    let readBufferIsAvailable = inputstream.getBuffer(&readBufferRef, length: &readBufferLengthRef)
                   //debugger: readBufferLengthRef = (int)0
                }
            }
break
+1
source share
1 answer

readBufferRef " ", , NULL.

, UnsafeMutablePointer<UInt8> inout ( Swift 2):

var readBufferRef: UnsafeMutablePointer<UInt8> = nil
var readBufferLengthRef = 0
let readBufferIsAvailable = inputStream.getBuffer(&readBufferRef, length: &readBufferLengthRef)

readBufferRef ( ) readBufferLengthRef .

0

Source: https://habr.com/ru/post/1772092/


All Articles