【问题标题】:CFStream Socket send packet not complete in IOS 7.0CFStream Socket 发送数据包在 IOS 7.0 中未完成
【发布时间】:2013-09-25 10:15:43
【问题描述】:

我使用 CFStream Socket 向主机发送数据。 第一次发送是工作。 但首先,主机接收的数据总是被分散的。 例如:

第一次发送:

Sender:  <11223344 55667788>
Recver:  <11223344 55667788> 

没关系

第二次,第三次……

Sender:  <11223344 55667788>
Recver:  <11>
Recver:  <223344 55667788> 

此症状仅在 IOS 7.0 中出现。 6.0、5.0没有这个症状...

enter code here
CFReadStreamRef inputStream;
CFWriteStreamRef outputStream;
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)_owner.ip, _owner.port, &inputStream, &outputStream);
NSDictionary *sslSettings = @{(id)kCFStreamSSLValidatesCertificateChain: (id)kCFBooleanFalse};
CFReadStreamSetProperty(inputStream, kCFStreamPropertySocketSecurityLevel, kCFStreamSocketSecurityLevelTLSv1);
CFReadStreamSetProperty(inputStream, kCFStreamPropertySSLSettings, (__bridge CFTypeRef)(sslSettings));
CFWriteStreamSetProperty(outputStream, kCFStreamPropertySocketSecurityLevel, kCFStreamSocketSecurityLevelTLSv1);
CFWriteStreamSetProperty(outputStream, kCFStreamPropertySSLSettings, (__bridge CFTypeRef)(sslSettings));
_inputStream = (__bridge_transfer NSInputStream *)inputStream;
[_inputStream setDelegate:self];
[_inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

_outputStream = (__bridge_transfer NSOutputStream *)outputStream;
[_outputStream setDelegate:self];
[_outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

[_inputStream open];
[_outputStream open];

谢谢

【问题讨论】:

    标签: ios objective-c c ios7 cfstream


    【解决方案1】:

    这似乎是缓解 BEAST 攻击的 1/n-1 拆分技术。 http://threatpost.com/apple-turns-on-safari-beast-attack-mitigation-by-default-in-os-x-mavericks/102804

    您的服务器可能只支持 TLS 1.0。如果你升级你的服务器以支持 TLS 1.2,我相信 iOS 会停止这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 2019-07-23
      相关资源
      最近更新 更多