NSStreamを用いたソケット通信でデータの長さを指定した受信動作をしたい
GCDAsyncSocketというライブラリを用いてソケット通信を行っていたのですが、
IPv6 only Networkでのデバッグで
lost connect Error Domain=NSPOSIXErrorDomain Code=51 "Network is unreachable" UserInfo={NSLocalizedDescription=Network is unreachable, NSLocalizedFailureReason=Error in connect() function}
というエラーが出てしまいどうにもいかなくなってしまったため、
NSStreamでの実装を行っているのですが、データの受信でデータが欠けるという事態に対処ができなくご教示いただけたらと思っております。
GCDAsyncSocketであれば、readDataToLengthで指定した長さのソケットを読み込むことが出来、それにより受け取るソケットのサイズを把握することができたのですが、NSStreamではそのような実装は可能なのでしょうか?
NSStreamEventHasBytesAvailableでは以下のようにしてNSDataを取得しています
uint8_t buffer[4096];
unsigned int len = 0;
while ([InputStream hasBytesAvailable])
{
[InputStream getBuffer:&buffer length:&len];
len = [InputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0){
NSData *data = [NSData dataWithBytes:buffer length:len];
}
}
よろしくお願いいたします。