首先,我不得不说我在日期和时间设置中设置了自动设置,并且每个设备的时区都是相同的。所以我使用[NSDate date]
以毫秒为单位获取时间戳,然后编码NSData
并发送到另一个设备。在接收器上,数据正在被解码并用 new 减去[NSDate date]
。这样我就可以获得发送和接收消息所需的总时间。我被认为是因为当发送者是 iPhone 4 iOS6 而接收者是 iPhone 5 iOS7 时,接收者的时间戳比发送者早。我不知道为什么?对于这种操作,也许[NSData date]
不是最可靠的类?我GCDAsyncUdpSocket
用于发送/接收 UDP。
代码发送者
NSData *data2 = [self createRandomNSData:8192];
NSMutableData *dataToSend =[NSMutableData data];
[dataToSend appendBytes:&tag length:sizeof(int)];
long long currentTimeStamp = (long long)([[NSDate date] timeIntervalSince1970]*1000.0);
[dataToSend appendBytes:¤tTimeStamp length:sizeof(long long)];
[dataToSend appendData:data2];
NSLog(@"%i || %lld || %lu",tag, currentTimeStamp,(unsigned long)[dataToSend length]);
[_udpSocket sendData:dataToSend toHost:@"230.0.0.1" port:_port withTimeout:-1 tag:tag];
tag++;
代码接收器
char* dataBytes = [data bytes];
int inTag;
long long inCurrentTimeStamp;
[data getBytes:&inTag length:sizeof(int)];
[data getBytes:&inCurrentTimeStamp range:NSMakeRange(sizeof(int), sizeof(long long))];
long long currentTimeStamp = (long long)([[NSDate date] timeIntervalSince1970]*1000.0);
long long timeStampDiff = currentTimeStamp - inCurrentTimeStamp;
self.delay = timeStampDiff;
NSLog(@"%i || %lld || %lu",inTag, timeStampDiff,(unsigned long)[data length]);