0
当使用GCDAsyncSocket
发送长文本字符串时,在接收端会调用readDataWithTimeOut
多次,但收到的数据不一致,即收到相同的文本,但NSData
不同。造成这种差异的可能原因是什么?请让我知道,因为我对GCDAsyncSocket
知之甚少。使用替代GCDAsyncSocket部分读取长文本:iOS
- (void)writeData:(NSData *)data {
[self.asyncSocket writeData:data withTimeout:-1 tag:1];
}
#pragma mark - GCDAsyncSocket Delegate Methods -
- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err {
[[NSNotificationCenter defaultCenter] postNotificationName:KSOCKET_MANAGER_REMOVAL
object:self
userInfo:nil];
}
- (void)socketDidCloseReadStream:(GCDAsyncSocket *)sock {
}
- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag {
}
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
DDLogInfo(@"SOCKET DID READ DATA:%@:%@",self.asyncSocket,self.contactJID);
[sock readDataWithTimeout:-1 tag:0];
if (data!=nil)
[self loadMessageWithData:data];
}
#pragma mark - Private Methods -
- (void)loadMessageWithData:(NSData *)encryptedData {
NSLog(@"DATA RECEIVED");
}
基本上,我使用XMPP框架内部使用GCDAsyncSocket类。我改变了你描述的方式。我遇到了两个问题:1。文本现在第二次被传送2.仍然接收到数据块而不是完整的数据。你能告诉我需要做什么吗?我也修改了我添加代码的问题。 –
请检查更新的答案 – Pramod