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